巨集是一種可由巨集的值代替的程式碼段。 巨集由#define
指令定義。 有兩種型別的巨集:
類似物件的巨集
類似物件的巨集是一種被值替換的識別符號。它廣泛用於表示數位常數。 例如:
#define PI 3.14
這裡,PI
就是代替值3.14
的巨集名稱,對於巨集名稱可使用與變數命名規則相同的其它名稱。
類似函式的巨集
類似函式的巨集看起來像函式呼叫。例如:
#define MIN(a,b) ((a)<(b)?(a):(b))
這裡,MIN
是巨集的名稱。
可通過存取#define來檢視類似物件和類似函式的巨集的完整範例。
ANSI C定義了許多可在C語言程式中使用的預定義的巨集。如下列表所示 -
序號 | 巨集 | 說明 |
---|---|---|
1 | _DATE_ |
以「MMM DD YYYY」 格式表示當前日期。 |
2 | _TIME_ |
以「HH:MM:SS」 格式表示當前時間。 |
3 | _FILE_ |
表示當前檔案名。 |
4 | _LINE_ |
表示當前行。 |
5 | _STDC_ |
當編譯器符合ANSI標準時,它被定義為1 。 |
C語言預定義的巨集範例
為了更好地演示如何使用C語言預定義的巨集,我們建立一個原始檔:predefined-macros.c 在工程 preprocessor 中,其程式碼如下所示 -
#include <stdio.h>
void main() {
printf("File :%s\n", __FILE__);
printf("Date :%s\n", __DATE__);
printf("Time :%s\n", __TIME__);
printf("Line :%d\n", __LINE__);
//printf("STDC :%d\n", __STDC__); 不常用
}
執行上面範例程式碼,得到以下結果 -
File :f:\worksp\clanguage\preprocessor\preprocessor\predefined-macros.c
Date :Aug 17 2017
Time :17:33:25
Line :6