Les .h sont limités en taille? [MFC] - C++ - Programmation
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, ...)
Marsh Posté le 09-04-2004 à 11:18:19
el_gringo a écrit : Non. |
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...
Marsh Posté le 09-04-2004 à 11:40:31
Alkor2001 a écrit : Bonjour, |
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 ?
Marsh Posté le 09-04-2004 à 11:43:42
Alkor2001 a écrit : |
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...
Marsh Posté le 09-04-2004 à 11:50:54
pascal_ a écrit : |
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.
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...
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];".
Marsh Posté le 09-04-2004 à 12:15:51
pascal_ a écrit : |
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!
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...
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...