J'ai une question sur l'utilisation de #undef
pour redéfinir des macros.
J'ai un fichier global.h
qui contient un certain nombre de # macros define-d. Dans le code qui utilise ces macros, je trouve que les valeurs que contiennent les macros ne sont pas assez génériques. Je veux redéfinir les macros pour les rendre plus génériques. J'ai écrit l'extrait de code suivant pour faire exactement cela:portée de #undef C++
std::cout << endl << "Enter pitch threshold:" << endl;
std::cin >> pitchT;
#ifdef PitchThreshold
#undef PitchThreshold
#define PitchThreshold pitchT
#endif
Mes questions sont les suivantes:
Est-ce que l'aide d'un #undef de cette manière d'assurer la redéfinition de la macro dans tous les fichiers source, ou est-ce à la fonction locale où les lignes de code ci-dessus sont écrites? Quelle est la portée des opérateurs #undef et #define?
Que puis-je faire (en dehors de la modification des macros dans le fichier où ils sont # define-d lui-même) pour assurer que les définitions de macro sont modifiées dans tous les fichiers source?
Merci,
Sriram
mais l'opérateur #undef a-t-il quelque chose à voir avec la valeur avec laquelle il est redéfini? Par exemple, dans l'extrait de code ci-dessus, pitchT est un int qui est local à la fonction où cette redéfinition a lieu. Quand pitchT est hors de portée, cela affecte-t-il l'instruction #define? – Sriram
Vous ne pouvez pas modifier la valeur d'une macro au moment de l'exécution. Le préprocesseur ne fait que des substitutions textuelles, donc la prochaine fois que 'PitchThreshold' est utilisé dans votre code, il est remplacé par' pitchT' (le nom de la variable, pas sa valeur). –
c'était la réponse que je cherchais! merci les larsmans! Je pensais que #define remplacerait pitchT par sa valeur. – Sriram