程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C預定義宏

C預定義宏

編輯:關於C語言

__DATE__

字符串常量,標示預處理器執行的日期,包含11個字符例如:“Feb 12 1996 ”,如果日期小於10,前面補充空格。

如果GCC無法確定當前日期,則每次編譯時產生警告,__DATE__表示成”??? ?? ????”。

__TIME__

字符串常量,標示預處理執行的時間,包含8個字符,例如:“23:59:01”。

如果GCC無法確定當前時間,則每次編譯時產生警告,__DATE__表示成”??:??:??”。

__FILE__

C串常量,當前源碼文件,包含詳細路徑,例如:“/usr/local/include/leo.c”

__LINE__

十進制整數常量,標示當前行號。

 

__FILE__ 和__LINE__在生成報告程序錯誤的信息時非常有用,可以標示異常產生的文件、行號。

An #include directive changes the expansions of __FILE__ and __LINE__ to correspond to the included file. At the end of that file, when processing resumes on the input file that contained the #include directive, the expansions of __FILE__ and __LINE__ revert to the values they had before the #include (but __LINE__ is then incremented by one as processing moves to the line after the #include).

#line 指令也會改變__FILE__和__LINE__的值。

__func__

字符串,標示當前所在函數名,C99 引入。

__FUNCITON__

同__func__,GCC引入。

__func__和__FUNCITON__都不是宏,預處理器並不知道當前所在函數的名稱,然而它和__FILE__、__LINE__一樣可以用於程序調試和異常信息報告。

__STDC__

其值為1,則表示編譯器遵循ISO Standard C。如果編譯器使用GNU CPP 而不是GCC則不是如此。除非使用了-tradional-cpp 選項,否則預處理器總是遵循標准。

使用-tradional-cpp 選項時,此宏不被定義。

有些機器上,遵循標准C時,它被定義為1,而不遵循標准時為0,所以最好使用#if __STDC__,

而不要使用#ifdef __STDC__.

__STDC__VERSION__

長整型常量,標示編譯器所遵循的c標准的版本號,形如:yyyymmL,yyyy和mm分別標示版本的年和月。

除非GNU CPP 使用GCC,否則其實現並不需要很准確,如199409L表示1994年修訂過的1989C,也是當前默認支持的。199901L表示1999C,目前並不能完全支持1999C。

如果使用了-tradional-cpp 或者編譯C++或者Objective-C 時,此宏不被定義。

 

摘自 sdtarena

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved