#ifや#defineの確認方法(プリプロセッサ)

昨日、#ifdef 追加の確認なんて目チェックで十分。なんてことを未来ある若者に適当な感じで言ってしまったを反省したのでメモとして書こうかなと。

今回は、プリプロセッサ処理後の結果で確認するという方法を書きます。
たぶん、今どきはIDE#define定義を指示すればコード上で色づけされるんだろうなと勝手に思ってます。

例えば、以下のmain.cppファイルがあった場合

int main(int argc, char const* argv[])
{
#ifdef TEST
  int value = 100;
#else
  int value = 0;
#endif
// 何かの処理が続く
  return 0;
}

あとは、gccのオプションに -Eをつけて標準出力に出す。

$ gcc -E main.cpp

実行結果は以下になります。

$ gcc -E main.cpp
# 1 "main.cpp"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 336 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "main.cpp" 2

int main(int argc, char const* argv[])
{



 int value = 0;


 return 0;
}

TEST が有効になった場合の時も確認したいので、-Dにて指定します。

$ gcc -E -DTEST main.cpp 
# 1 "main.cpp"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 336 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "main.cpp" 2

int main(int argc, char const* argv[])
{

 int value = 100;




 return 0;
}

とこんな感じで確認できます。
(色々読み込んでいると大量に出るけど...)

あと合わせて -Cとか -Pとかあるけど説明省略します。

参考URL