質問


使用について質問があります #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演算子のスコープは、呼び出された後のファイル全体です。これには、それを含むすべてのファイルが含まれます(プリプロセッサがファイルを一緒にチェーンするだけです。)それはプリプロセッサの一部であるため、スコープのような奇妙なものはありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top