条件付きコンパイル


#include <stdio.h>

#define DEBUG

void main()
{
 printf( "処理開始\n" );

#ifdef DEBUG
 printf( "%s\n", __TIME__ );
 printf( "%s\n", __DATE__ );
 printf( "%s\n", __FILE__ );
 printf( "%d\n", __LINE__ );
#endif

 printf( "処理終了\n" );
}


出力結果

処理開始
11:56:29
Oct 19 2006
C:\xxx\xxx\xxx\tekito.cpp
13
処理終了




#include <stdio.h>

//#define DEBUG

void main()
{
 printf( "処理開始\n" );

#ifdef DEBUG
 printf( "%s\n", __TIME__ );
 printf( "%s\n", __DATE__ );
 printf( "%s\n", __FILE__ );
 printf( "%d\n", __LINE__ );
#endif

 printf( "処理終了\n" );
}

出力結果

処理開始
処理終了

C > プリプロセッサ | comments (0) | trackbacks (0)

処理系が定義しているマクロ

C言語の処理系は次の4種類のマクロを標準マクロとして定義しています。
__TIME__コンパイル時刻を「時:分:秒」の書式で表す文字列
__DATE__コンパイル日付を「月 日 年」の書式で表す文字列
__FILE__処理中のソースプログラムの名前を表す文字列
__LINE__処理中のソースプログラムの行番号を表す10進数(先頭行は1)
C > プリプロセッサ | comments (0) | trackbacks (0)

代表的なプリプロセッサ制御文

#defineマクロの定義
#undef定義の無効化
#includeファイルの取り込み
#if条件コンパイル
#elif条件コンパイル
#else条件コンパイル
#ifdef条件コンパイル
#ifndef条件コンパイル
#line行制御
#errorエラー生成
#pragma厳密にはコンパイラ制御文
C > プリプロセッサ | comments (0) | trackbacks (0)

#define



#deifne PI 3.14159L
#define RAD(x) ( (x) * PI / 180.0 )


・マクロパラメータはカッコを付ける
・マクロ全体にカッコを付ける
・マクロパラメータにインクリメント/デクリメントは避ける
C > プリプロセッサ | comments (0) | trackbacks (0)