C語言預定義巨集(__LINE__、__DATE__等)淺析
阿新 • • 發佈:2019-01-02
ANSIC標準定義了以下5種可供C語言使用的預定義巨集:
__LINE__ 在原始碼中插入當前原始碼行號
__FILE__ 在原始碼中插入當前原始碼檔名
__DATE__ 在原始碼中插入當前編譯日期〔注意和當前系統日期區別開來〕
__TIME__ 在原始碼中插入當前編譯時間〔注意和當前系統時間區別開來〕
__STDC__ 當要求程式嚴格遵循ANSIC標準時該識別符號被賦值為1。
識別符號__LINE__和__FILE__通常用來除錯程式;
識別符號__DATE__和__TIME__通常用來在編譯後的程式中加入一個時間標誌,以區分程式的不同版本;
[[email protected] Test]# gcc test.c
[[email protected] Test]# ./a.out
5
main
21:25:52
May 30 2016
test.c
1
__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; }
[[email protected] Test]# gcc test.c
[[email protected] Test]# ./a.out
5
main
21:25:52
May 30 2016
test.c
1