C語言預定義宏(__LINE__、__DATE__等)淺析

ANSIC標準定義了以下5種可供C語言使用的預定義宏: 
__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



發佈了15 篇原創文章 · 獲贊 73 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章