C語言編譯器的預定義符號

C語言編譯器的預定義符號
__LINE__           當前(源代碼文件)行號 [整數]
__FILE__           當前正在編譯的文件的文件名   [字符串]
__DATE__           當前日期,以“月月 日日 年年年年”的形式給出 [字符串]
__TIME__           當前時間,以“HH:mm:ss”的格式給出   [字符串]
__STDC__           如果編譯器符合ANSI C標準,該宏爲1,否則爲0
__STDC_HOSTED__    如果實現了所有C標準庫,該宏爲1,否則爲0
__STDC_VERSION__   被定義爲199901L(不同編譯器可能不一樣,比如我用的gcc裏就沒有這個預定義符號)
注:這些預定義符號的首尾爲兩個下劃線,如果是兩個單詞,中間以一個下劃線連接。
如果在源代碼中使用了這些符號,它們會在預處理時被轉換(使用gcc編譯器的 -E 選項可以看到替換後的值)
C標準裏還在每個函數內預定義了一個標誌符: __func__
它被定義爲 static const char __func__[]="function-name";
即不能在程序內對__func__賦值,也不能改變它所指向的字符串(函數名),否則報編譯錯誤
注:__func__是個標誌符,它在預處理階段不被替換,所以使用gcc -E 是看不到任何效果的。
例:test.c
int main(){
    printf("%s %s/n",__FILE__,__func__);
    return 0;
}
輸出: test.c main


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/flylonginsky/archive/2009/07/14/4346310.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章