[MFC]Les .h sont limités en taille?

Les .h sont limités en taille? [MFC] - C++ - Programmation

Marsh Posté le 09-04-2004 à 11:09:52    

Bonjour,
Je viens de commencer un stage durant lequel je dois tout d'abord finaliser un logiciel codé en MFC sous Visual C++ 6...
Donc pas de problèmes, je le modifie, j'y ajoute des fonctionnalités, tout marche bien, sauf que là j'ai un problème que je ne comprends pas du tout!
En fait, dès que j'essaye d'ajouter un char[128] dans un des .h le programme fonctionne, mais à la sortie il plante (soit en affichant une erreur Windows "ce programme a causé une défaillance ... mfc42.dll ...", soit en rouvrant la fenêtre principale à l'infini jusqu'au plantage!)
Ce qui est bizarre, c'est que je peux mettre un char[2] ou un BYTE dans le .h, ça marchera, mais si je veux mettre un char[] de taille supérieure ou un int, paf plantage...
 
Donc la question que je me pose, c'est: Est ce qu'en MFC la taille des .h est limitée?  
 


---------------
J'aime pas Apple...
Reply

Marsh Posté le 09-04-2004 à 11:09:52   

Reply

Marsh Posté le 09-04-2004 à 11:15:46    

Non.
Y a surement un débordement mémoire quelque part (genre dépassemnt de tableau, erreur d'allocation, ...)

Reply

Marsh Posté le 09-04-2004 à 11:18:19    

el_gringo a écrit :

Non.
Y a surement un débordement mémoire quelque part (genre dépassemnt de tableau, erreur d'allocation, ...)


 
Ok...
Mais je ne comprends pas comment un débordement peut avoir lieu alors que je ne fais qu'ajouter une variable dans le .h et que je n'y ai même pas encore touché!
 
Surtout que le plantage n'intervient qu'en sortie du programme, tant que je l'utilise sans sortir tout fonctionne parfaitement...
 
Enfin merci de ta réponse, ça me rassure...


---------------
J'aime pas Apple...
Reply

Marsh Posté le 09-04-2004 à 11:40:31    

Alkor2001 a écrit :

Bonjour,
Je viens de commencer un stage durant lequel je dois tout d'abord finaliser un logiciel codé en MFC sous Visual C++ 6...
Donc pas de problèmes, je le modifie, j'y ajoute des fonctionnalités, tout marche bien, sauf que là j'ai un problème que je ne comprends pas du tout!
En fait, dès que j'essaye d'ajouter un char[128] dans un des .h le programme fonctionne, mais à la sortie il plante (soit en affichant une erreur Windows "ce programme a causé une défaillance ... mfc42.dll ...", soit en rouvrant la fenêtre principale à l'infini jusqu'au plantage!)
Ce qui est bizarre, c'est que je peux mettre un char[2] ou un BYTE dans le .h, ça marchera, mais si je veux mettre un char[] de taille supérieure ou un int, paf plantage...
 
Donc la question que je me pose, c'est: Est ce qu'en MFC la taille des .h est limitée?  
 
 


 
Euh, tu es conscient que n'importe quel fichier qui inclura ton .h va générer un tableau de char[128] ? Si ton .h est inclu 10 fois, dans l'exe il y aura 10 tab de char[128]. Es-tu sûr que c'est bien ce que tu veux ?
 
 

Reply

Marsh Posté le 09-04-2004 à 11:43:42    

Alkor2001 a écrit :


 
Ok...
Mais je ne comprends pas comment un débordement peut avoir lieu alors que je ne fais qu'ajouter une variable dans le .h et que je n'y ai même pas encore touché!
 
Surtout que le plantage n'intervient qu'en sortie du programme, tant que je l'utilise sans sortir tout fonctionne parfaitement...
 
Enfin merci de ta réponse, ça me rassure...


 
Ben non. Il y a quand même des erreurs dans ton prog...
Tu compiles en quoi : debug ou release ? Parcequ'un passage Debug->Release peut faire apparaître plein d'erreurs qui ne "s'expriment" pas en mode debug... tu peux tenter...
 
 
 

Reply

Marsh Posté le 09-04-2004 à 11:50:54    

pascal_ a écrit :


Euh, tu es conscient que n'importe quel fichier qui inclura ton .h va générer un tableau de char[128] ? Si ton .h est inclu 10 fois, dans l'exe il y aura 10 tab de char[128]. Es-tu sûr que c'est bien ce que tu veux ?


 
Oui j'en suis conscient, mais je ne vois pas d'autre moyen pour faire ça, j'ai besoin d'accéder à cette donnée depuis plusieurs autres classes... (et ce .h n'est inclu que 2 fois)
 
Sinon là j'étais en mode Release, je vais voir en debug si ça change quelque chose.


---------------
J'aime pas Apple...
Reply

Marsh Posté le 09-04-2004 à 12:01:59    

T'avais raison Pascal_, en debug ça fonctionne parfaitement, le plantage n'intervient que dans la version release...


---------------
J'aime pas Apple...
Reply

Marsh Posté le 09-04-2004 à 12:08:04    

Alkor2001 a écrit :

T'avais raison Pascal_, en debug ça fonctionne parfaitement, le plantage n'intervient que dans la version release...


 
oui mais c'est sûrement ton programme qui déconne hein, pas Visual.
 
Sinon, pour ton problème de char[128], il faut que tu utilises le mot-clé extern.
 
Dans le .h tu fait "extern char[128];" qui déclare le tableau.
Dans un .c, tu défini le tableau avec un "char[128];".
 
 

Reply

Marsh Posté le 09-04-2004 à 12:15:51    

pascal_ a écrit :


 
oui mais c'est sûrement ton programme qui déconne hein, pas Visual.
 
Sinon, pour ton problème de char[128], il faut que tu utilises le mot-clé extern.
 
Dans le .h tu fait "extern char[128];" qui déclare le tableau.
Dans un .c, tu défini le tableau avec un "char[128];".


 
Je me doute bien que le problème vient de mon prog hein!   ;)  
(je n'ai ni le niveau ni les compétences pour critiquer VC++)
 
Merci pour le "extern", je ne connaissais pas... C'est sûr que ça serait beaucoup plus propre!


---------------
J'aime pas Apple...
Reply

Marsh Posté le 09-04-2004 à 13:48:04    

Merci Pascal_, ça fonctionne très bien maintenant, et je vais pouvoir bien améliorer mon code avec ça!
 
J'aurais appris un truc important aujourd'hui en tout cas...   :jap:


---------------
J'aime pas Apple...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed