[c] Changer la valeur d'une constante define (on ne rigole pas Svp)

cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 - 26 juil. 2005 à 18:02
vladisback Messages postés 61 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 5 août 2008 - 27 juil. 2005 à 10:11
Bonjour à tous,

Je suis bien embeté, j'ai des tableaux de chaines à initialiser à une telle longueur par défaut et cette longueur, comme vous le savez tous, ne peut etre qu'une constante.
Seulement, il me serait très appréciable de pouvoir modifier cette longueur au cours du déroulement de l'application (mes chaines sont redéclarées) et pour ça, il me suffirait de changer la valeur du define...
Est-ce possible ?

David, à VERSAILLES

6 réponses

BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
26 juil. 2005 à 18:19
voir malloc, new, etc pour allocs dynamiques.

ciao...
BruNews, MVP VC++
0
oulali Messages postés 19 Date d'inscription lundi 28 juin 2004 Statut Membre Dernière intervention 29 novembre 2005
26 juil. 2005 à 18:31
Changer la valeur du #define est "impossible" et cela n'a aucun sens. Ce que tu dois faire c'est d'utiliser un tableau dynamique et redéfinir la taille en fonction du besoin par un malloc, realloc. N'oublie pas qu'il faut appeler free à la fin.




Sinon, tu peux utiliser des classes, genre string si tu as un tableau de caractères, et dans ce cas, l’allocation est automatique.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
26 juil. 2005 à 20:47
Tu peux refaire le define en faisant un #undef avant, mais ca ne sert à rien, c'est comme si tu utilisait une autre #define
0
vladisback Messages postés 61 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 5 août 2008
26 juil. 2005 à 22:57
il y a aussi les list ou encore les pointeurs avec des new et des delete[], si tu veux dlaide sur les pointeurs demande et jferai mon possible!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
27 juil. 2005 à 08:44
Le undef serait la solution qui me correspondrait le mieux (car il n'y a pas que des chaines à redimensionner, il y a aussi la longueur des champs d'un fichier indexé et des repères divers)

Mais comment s'en sert on ? J'ai fait #undef maVariable; mais ça ne marche pas.

David, à VERSAILLES
0
vladisback Messages postés 61 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 5 août 2008
27 juil. 2005 à 10:11
le probleme des #define et des #undef c'est qu'il ne sont pas utilisé dans le programme, ce sont des lignes qui sont traitées par le préprocesseur durant la compilation, meme si il se trouve dans un if, le préprocesseur ne va pas vérifier ce if, il va directement s'occuper de ton #undef.
toutes les lignes commencant par # sont des directive pour précompileur.

Je ne sait pas si j'ai été trés clair, et si j'ai fait une erreur merci de me corriger bien que je ne pense pas me tromper.
0