質問
使用について質問があります #undef
マクロを再定義する。
ファイルがあります global.h
多くの#define-Dマクロが含まれています。これらのマクロを使用するコードでは、マクロが保持する値は十分に一般的ではないことがわかります。マクロを再定義して、より一般的なものにしたいと思います。次のコードスニペットを書き、まさにそれを行いました。
std::cout << endl << "Enter pitch threshold:" << endl;
std::cin >> pitchT;
#ifdef PitchThreshold
#undef PitchThreshold
#define PitchThreshold pitchT
#endif
私の質問は次のとおりです。
この方法で#undefを使用すると、すべてのソースファイル全体でマクロの再定義が確保されますか、それともコードの上記の行が書かれている関数にローカルですか? #undefおよび#defineオペレーターの範囲は何ですか?
すべてのソースファイルでマクロ定義が変更されることを確認するために、私は何ができますか?
ありがとう、
スリラム
解決
#ifdef
これは、プリプロセッサ指令であり、これは、ソースコードがコンパイルされる前に適用されることを意味します。これは、「下」のソースコードのみが影響を受けることを意味します。プリプロセッサを介してソースコードを実行すると、結果が表示されます。これにより、プレプリセッサの仕組みに関するより多くの洞察が得られます。
他のヒント
#Undef演算子のスコープは、呼び出された後のファイル全体です。これには、それを含むすべてのファイルが含まれます(プリプロセッサがファイルを一緒にチェーンするだけです。)それはプリプロセッサの一部であるため、スコープのような奇妙なものはありません。
所属していません StackOverflow