__LINE__ 在源代碼中插入當前源代碼行號
__FILE__ 在源代碼中插入當前源代碼文件名
__DATE__ 在源代碼中插入當前編譯日期〔注意和當前系統日期區別開來〕
__TIME__ 在源代碼中插入當前編譯時間〔注意和當前系統時間區別開來〕
__STDC__ 當要求程序嚴格遵循ANSIC標準時該標識符被賦值爲1。
標識符__LINE__和__FILE__通常用來調試程序;
標識符__DATE__和__TIME__通常用來在編譯後的程序中加入一個時間標誌,以區分程序的不同版本;
當編譯器嚴格遵循ANSIC標準時,標識符__STDC__就會被賦值爲1。
如果編譯器不遵循標準時,則可能僅支持以上宏名中的幾個,或根本不支持;不同的編譯器可能會提供其他預定義的宏名。
以下是在Linux C 中的代碼及其在gcc編譯器中的執行效果:
源代碼文件名test.c
#include<stdio.h>
int main()
{
printf("%d\n",__LINE__);//顯示所在行號
printf("%s\n",__func__);//顯示所在函數
printf("%s\n",__TIME__);//顯示當前時間
printf("%s\n",__DATE__);//顯示當前日期
printf("%s\n",__FILE__);//顯示所處文件名,在源代碼中插入當前源代碼文件名
printf("%d\n",__STDC__);//編譯器遵循ANSI C標準時該標識被賦值爲1;
return 0;
}
編譯執行結果如下:[root@localhost Test]# gcc test.c
[root@localhost Test]# ./a.out
5
main
21:25:52
May 30 2016
test.c
1