Question


J'ai une question sur l'utilisation #undef de redéfinir les macros.
J'ai un global.h de fichier qui contient un certain nombre de macros # Define-d. Dans le code qui utilise ces macros, je trouve que les valeurs que les macros détiennent ne sont pas assez générique. 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:

 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 ci-dessus de code sont écrits? Quelle est la portée des opérateurs de #undef et #define?
Que puis-je faire (à part la modification des macros dans le fichier où ils sont #define-d lui-même) pour veiller à ce que les définitions de macros sont changées dans tous les fichiers source?
Merci,
Sriram

Était-ce utile?

La solution

#ifdef est une directive préprocesseur, cela signifie qu'il sera appliqué avant que votre code source est compilé. Cela signifie que seul le code source « ci-dessous » sera affectée. Si vous exécutez votre code source par le préprocesseur, vous serez en mesure de voir le résultat. Cela vous donnera plus de perspicacité dans le fonctionnement du préprocesseur.

Autres conseils

La portée de l'opérateur #undef est le fichier entier après il est appelé. Cela inclut tous les fichiers qui comprennent (parce que le préprocesseur seulement des chaînes les fichiers ensemble.) Parce qu'il fait partie du préprocesseur il n'a pas des choses étranges comme la portée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top