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