[c] Changer la valeur d'une constante define (on ne rigole pas Svp)
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 2011
-
26 juil. 2005 à 18:02
vladisback
Messages postés61Date d'inscriptiondimanche 19 novembre 2000StatutMembreDerniè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 ?
oulali
Messages postés19Date d'inscriptionlundi 28 juin 2004StatutMembreDernière intervention29 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, lallocation est automatique.
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 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.
vladisback
Messages postés61Date d'inscriptiondimanche 19 novembre 2000StatutMembreDerniè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.