C語言中幾種特殊標準定義和用法

除了你們說的PHP,其實,C語言也是世界上最好的語言。C語言已經連續幾個月佔比 TIOBE 榜首,成爲最受歡迎的編程語言了。


圖片


C語言之因此那麼受歡迎,除了歷史悠久以外,還有他它具備一些編程語言沒有的功能。那麼,今年咱們就來了解一下C語言的一些特殊功能。
1、ANSI C特殊標準定義羅列一些常見的特殊定義:
編程


__FILE__:正在編譯文件的路徑及文件名app

__LINE__:正在編譯文件的行號編程語言

__DATE__:編譯時刻的日期字符串 如「July 19 2019」ide

__TIME__:編譯時刻的時間字符串  如」22:00:00「函數


代碼:學習

char BuildFile[] = __FILE__;int  BuildLine = __LINE__;char BuildDate[] = __DATE__;char BuildTime[] = __TIME__;
printf("編譯文件路徑:%s\n", BuildFile);printf("編譯代碼所在行:%d\n", TestLine);printf("編譯日期:%s\n", BuildDate);printf("編譯時間:%s\n", BuildTime);


提示:__LINE__是整型數據;
其實除了這些還有不少相關的定義,好比:1.__FUNCTION__:函數名,類型爲:字符常量指針。
ui

char const* BuildFunName = __FUNCTION__;printf("函數名稱爲:%s\n", BuildFunName);

2.__VER__ :IDE版本信息,類型爲:整型。 如我用的IAR版本爲:7.80.04,以下圖: 圖片

代碼:
int  IDEVersion = __VER__;printf("IDE版本:%d\n", IDEVersion);

輸出:spa

IDE版本:7080004


2、可變參數指針

咱們在學習C語言的時候,都知道printf是可變參數的函數:code


char a = 1;char b = 2;char c = 3;printf("a = %d\n", a);printf("a = %d; b = %d\n", a, b);printf("a = %d; b = %d; c = %d\n", a, b, c);

上面就是可變參數printf的例子,也就是說參數能夠一個也能夠多個。


而接下來講的__VA_ARGS__,就是一個可變參數宏,與printf中可變參數的宏定義一個道理,是新C99規範中增長的。


1.關於__VA_ARGS__

__VA_ARGS__它是一個可變參數的宏,就是將左邊宏中「...」 的內容原樣抄寫在右邊 __VA_ARGS__ 所在的位置。


要注意的是,printf 的輸出格式是括號內左邊是字符串,右邊是變量,並且右變量與左輸出格式是一一對應的,不對應就會出錯。能夠參看下面那個例子, __VA_ARGS__實際上是遵循了printf的格式。

...缺省號表明一個能夠變化的參數表。使用保留名 __VA_ARGS__ 把參數傳遞給宏。當宏的調用展開時,實際的參數就傳遞給 printf()了。


2.實例說明

#define SENSOR_Printf(...)  printf("--SENSOR--"__VA_ARGS__)int TemperatureVal = 25;SENSOR_Printf("溫度 = %d℃\n", TemperatureVal);



輸出結果:

--SENSOR--溫度 = 25℃


用心的朋友可能會猜想的到:「...」相似等於「__VA_ARGS__」。


從例子中咱們能夠看得出來,__VA_ARGS__的用途,主要是用於可變參數的函數。咱們使用較多的printf就是最多見的一個。


若是咱們的工程很龐大,咱們就能夠將打印信息分類,這樣的好處就是方便咱們識別各種打印信息。



文章來源於strongerHuang ,做者strongerHuang

相關文章
相關標籤/搜索