cでは事前定義が役立ちます
2261 ワード
ANSI C規格には、いくつかの規格定義済みマクロがあります.FILE__ __DATE__ __TIME___ __LINE__など
__LINE__:ソースコードに現在のソースコード行番号を挿入します.
__FILE__:現在のソースファイル名をソースファイルに挿入します.
__DATE__:ソースファイルに現在のコンパイル日を挿入
__TIME__:ソースファイルに現在のコンパイル時間を挿入します.
__stdC__:この識別は、プログラムがANSI C規格に厳格に従うことが要求される場合、1に割り当てられる.
__cplusplus:C++プログラムを記述するときにこの識別子が定義されます.
このいくつかのマクロは比較的に役に立つ~~~~~~~~~
デバッガ時またはコンパイル時、_LINE__論理エラーの行番号~~~~~~~~~~~~~、例:
switch(x)
{
case 1:
....;
break;
case 2:
.....;
break;
default:
printf("logic erro line number%d!/n",__LINE__);
break;
}
また利用_DATE__および_TIME__コンパイル時間を挿入できます.
コード:
void print_version_info(void)
{
printf("Date Compiled:%s/n",__DATE__);
printf("TimeCompiled:%s/n",__TIME__);
}
出力フォーマット:mmddyyとhh:mm:ss
役割:_についてFILE__,__LINE__,__func__このようなマクロは、プログラムがどのファイルに実行された行が、どの関数であるかを簡単に知ることができるので、プログラムをデバッグするときに役立ちます.
次の例は、上記の定義済みマクロを印刷するものである.
__DATE__,__FILE__,__LINE__,__TIME__,__FUNCTION__ C規格では定義済みのマクロがいくつか指定されており、プログラミングによく用いられる.次の表には、よく使用される事前定義マクロがあります.
__DATE_ %s_ 前処理を行った日付(「Mmm dd yyyyyy」形式の文字列文字)
__FILE__%sは現在のソースファイル名を表す文字列文字
__LINE__%dは、現在のソースコードの行番号の整数定数を表します.
__TIME__%sソースファイルのコンパイル時間、フォーマットマイクロ「hh:mm:ss」
__FUNCTION__(__func__)%s現在存在する関数名
戻りタイプとパラメータタイプを含む現在の関数名.
例えば、printf("_PRETTY_FUNCTION_:%s/n"_PRETTY_FUNCTION_);
出力:_PRETTY_FUNCTION__:int main(int, char**)
#include
#include void why_me(); int main() { printf( "The file is %s./n", __FILE__ ); printf( "The date is %s./n", __DATE__ ); printf( "The time is %s./n", __TIME__ ); printf( "This is line %d./n", __LINE__ ); printf( "This function is %s./n", __FUNCTION__ ); why_me(); return 0; }
void why_me() { printf( "This function is %s/n", __func__ ); printf( "The file is %s./n", __FILE__ ); printf( "This is line %d./n", __LINE__ ); }
__LINE__:ソースコードに現在のソースコード行番号を挿入します.
__FILE__:現在のソースファイル名をソースファイルに挿入します.
__DATE__:ソースファイルに現在のコンパイル日を挿入
__TIME__:ソースファイルに現在のコンパイル時間を挿入します.
__stdC__:この識別は、プログラムがANSI C規格に厳格に従うことが要求される場合、1に割り当てられる.
__cplusplus:C++プログラムを記述するときにこの識別子が定義されます.
このいくつかのマクロは比較的に役に立つ~~~~~~~~~
デバッガ時またはコンパイル時、_LINE__論理エラーの行番号~~~~~~~~~~~~~、例:
switch(x)
{
case 1:
....;
break;
case 2:
.....;
break;
default:
printf("logic erro line number%d!/n",__LINE__);
break;
}
また利用_DATE__および_TIME__コンパイル時間を挿入できます.
コード:
void print_version_info(void)
{
printf("Date Compiled:%s/n",__DATE__);
printf("TimeCompiled:%s/n",__TIME__);
}
出力フォーマット:mmddyyとhh:mm:ss
役割:_についてFILE__,__LINE__,__func__このようなマクロは、プログラムがどのファイルに実行された行が、どの関数であるかを簡単に知ることができるので、プログラムをデバッグするときに役立ちます.
次の例は、上記の定義済みマクロを印刷するものである.
__DATE__,__FILE__,__LINE__,__TIME__,__FUNCTION__ C規格では定義済みのマクロがいくつか指定されており、プログラミングによく用いられる.次の表には、よく使用される事前定義マクロがあります.
__DATE_ %s_ 前処理を行った日付(「Mmm dd yyyyyy」形式の文字列文字)
__FILE__%sは現在のソースファイル名を表す文字列文字
__LINE__%dは、現在のソースコードの行番号の整数定数を表します.
__TIME__%sソースファイルのコンパイル時間、フォーマットマイクロ「hh:mm:ss」
__FUNCTION__(__func__)%s現在存在する関数名
__PRETTY_FUNCTION__
%s 戻りタイプとパラメータタイプを含む現在の関数名.
例えば、printf("_PRETTY_FUNCTION_:%s/n"_PRETTY_FUNCTION_);
出力:_PRETTY_FUNCTION__:int main(int, char**)
#include
#include
void why_me() { printf( "This function is %s/n", __func__ ); printf( "The file is %s./n", __FILE__ ); printf( "This is line %d./n", __LINE__ ); }