C語言巨集


巨集是一種可由巨集的值代替的程式碼段。 巨集由#define指令定義。 有兩種型別的巨集:

  • 類似物件的巨集
  • 類似函式的巨集

類似物件的巨集

類似物件的巨集是一種被值替換的識別符號。它廣泛用於表示數位常數。 例如:

#define PI 3.14

這裡,PI就是代替值3.14的巨集名稱,對於巨集名稱可使用與變數命名規則相同的其它名稱。

類似函式的巨集

類似函式的巨集看起來像函式呼叫。例如:

#define MIN(a,b) ((a)<(b)?(a):(b))

這裡,MIN是巨集的名稱。

可通過存取#define來檢視類似物件和類似函式的巨集的完整範例。

C預定義巨集

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