#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
とかあるけど説明省略します。