c標准中指定了一些預定義的宏,對於編程經常會用到。下面這個表中就是一些常常用到的預定義宏。
__DATE__
進行預處理的日期(“Mmm dd yyyy”形式的字符串文字)
__FILE__
代表當前源代碼文件名的字符串文字
__LINE__
代表當前源代碼中的行號的整數常量
__TIME__
源文件編譯時間,格式微“hh:mm:ss”
__func__
當前所在函數名
對於__FILE__,__LINE__,__func__這樣的宏,在調試程序時是很有用的,因為你可以很容易的知道程序運行到了哪個文件的那一行,是哪個函數。
下面一個例子是打印上面這些預定義的宏的。
#include <stdio.h>
#include <stdlib.h>
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 ", __func__ );
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__ );
}
/*注意是C標准 本人在C/C++編譯器上測試上述代碼 發現在VC6.0下 __func__ 沒有定義*/