 
 
 
 
 
 
 
  
「C 言語のソースプログラム中で行頭が # で始まるのは C 言語の命令 ではなく、cpp (C preprocessor) の命令であり、マクロと呼ぶ」というような 話を聞いたか読んだことがある (と期待する) が、cpp は実際にどういうことを しているのだろうか? gcc -E とすると、cpp だけを行なうように指示す ることになる。
| サンプル・プログラム macro.c | 
| #include <stdio.h>
#include <math.h>
#ifdef M_PI /* システムが M_PI を定義してあれば、それを使う */
#define PI M_PI
#else       /* システムが M_PI を定義していなければ、自分で定義 */
#define PI 3.141592653589793
#endif
#define max(a,b) (((a)>(b)) ? (a) : (b))
int main()
{
  printf("max(π^2,10)=%g\n",
         max(PI*PI,10.0));
  return 0;
}
 | 
| gcc -E の結果 | 
| oyabun% gcc -E macro.c (途中省略) int main()
{
  printf("max(π^2,10)=%g\n",
         ((( 3.141592653589793 * 3.141592653589793  )>( 10.0 )) ? ( 3.141592653589793 * 3.141592653589793  ) : ( 10.0 )) );
  return 0;
}
 | 
 
 
 
 
 
 
