2011年11月14日月曜日

GCC でコンパイルの中間ファイルを残す

-save-temps というオプションを使う。

例: プリプロセッサの出力を調べる

マクロ "NUM" を含むソース dtestval.c
#include <stdio.h>
int main(int argc, char *argv[])
{
  printf("Value of NUM is %d\n", NUM);
  return 0;
}
-save-tempsオプションとマクロ定義を与えてコンパイルしてみる
$ gcc -save-temps -DNUM="1 + 1" dtestval.c -o dtestval
$ ls -1 dtestval*
dtestval
dtestval.c
dtestval.i
dtestval.o
dtestval.s
プリプロセスの出力ファイル dtestval.i
# 1 "dtestval.c"
# 1 ""
(省略)
# 938 "/usr/include/stdio.h" 3 4

# 2 "dtestval.c" 2

int main(int argc, char *argv[])
{
  printf("Value of NUM is %d\n", 1 + 1);
  return 0;
}
"NUM" の定義が反映されて 1 + 1 になっているのが分かる。

0 件のコメント:

コメントを投稿