鍍金池/ 教程/ C/ C語(yǔ)言宏
C語(yǔ)言printf()和scanf()函數(shù)
C語(yǔ)言strlen()函數(shù)
C語(yǔ)言指針
C語(yǔ)言ftell()函數(shù)
C語(yǔ)言#ifdef指令
C語(yǔ)言程序執(zhí)行流程
C語(yǔ)言歷史
C語(yǔ)言fprintf()和fscanf()函數(shù)
C語(yǔ)言#define指令
C語(yǔ)言#if指令
C語(yǔ)言將數(shù)組傳遞給函數(shù)
C語(yǔ)言指針的指針
C語(yǔ)言rewind()函數(shù)
C語(yǔ)言常量
C語(yǔ)言strcat()函數(shù)
C語(yǔ)言#ifndef指令
C語(yǔ)言continue語(yǔ)句
C語(yǔ)言注釋
C語(yǔ)言#include指令
C語(yǔ)言類型轉(zhuǎn)換
C語(yǔ)言strcpy()函數(shù)
C語(yǔ)言strlwr()函數(shù)
C語(yǔ)言while循環(huán)
C語(yǔ)言字符串
C語(yǔ)言strrev()函數(shù)
C語(yǔ)言gets()和puts()函數(shù)
C語(yǔ)言文件處理
C語(yǔ)言存儲(chǔ)分類
C語(yǔ)言運(yùn)算符
C語(yǔ)言數(shù)據(jù)類型
C語(yǔ)言strcmp()函數(shù)
C語(yǔ)言VS開(kāi)發(fā)環(huán)境安裝
C語(yǔ)言轉(zhuǎn)義序列
C語(yǔ)言第一個(gè)程序
C語(yǔ)言變量
C語(yǔ)言goto語(yǔ)句
C語(yǔ)言預(yù)處理器指令
C語(yǔ)言指針?biāo)阈g(shù)運(yùn)算
C語(yǔ)言數(shù)學(xué)函數(shù)
C語(yǔ)言二維數(shù)組
C語(yǔ)言for循環(huán)
C語(yǔ)言命令行參數(shù)
C語(yǔ)言通過(guò)值和引用函數(shù)
C語(yǔ)言fputs()和fgets()函數(shù)
C語(yǔ)言do-while循環(huán)
C語(yǔ)言結(jié)構(gòu)體數(shù)組
C語(yǔ)言循環(huán)
C語(yǔ)言#pragma指令
C語(yǔ)言關(guān)鍵字
C語(yǔ)言#error指令
C語(yǔ)言聯(lián)合體
C語(yǔ)言特點(diǎn)
C語(yǔ)言break語(yǔ)句
C語(yǔ)言遞歸
C語(yǔ)言函數(shù)
C語(yǔ)言結(jié)構(gòu)體
C語(yǔ)言switch語(yǔ)句
C語(yǔ)言結(jié)構(gòu)體嵌套
C語(yǔ)言fputc()和fgetc()函數(shù)
C語(yǔ)言fseek()函數(shù)
C語(yǔ)言字符串函數(shù)
C語(yǔ)言if-else語(yǔ)句
C語(yǔ)言教程
C語(yǔ)言宏
C語(yǔ)言數(shù)組
C語(yǔ)言strupr()函數(shù)
C語(yǔ)言#undef指令

C語(yǔ)言宏

宏是一種可由宏的值代替的代碼段。 宏由#define指令定義。 有兩種類型的宏:

  • 類似對(duì)象的宏
  • 類似函數(shù)的宏

類似對(duì)象的宏

類似對(duì)象的宏是一種被值替換的標(biāo)識(shí)符。它廣泛用于表示數(shù)字常數(shù)。 例如:

#define PI 3.14

這里,PI就是代替值3.14的宏名稱,對(duì)于宏名稱可使用與變量命名規(guī)則相同的其它名稱。

類似函數(shù)的宏

類似函數(shù)的宏看起來(lái)像函數(shù)調(diào)用。例如:

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

這里,MIN是宏的名稱。

可通過(guò)訪問(wèn)#define來(lái)查看類似對(duì)象和類似函數(shù)的宏的完整示例。

C預(yù)定義宏

ANSI C定義了許多可在C語(yǔ)言程序中使用的預(yù)定義的宏。如下列表所示 -

序號(hào) 說(shuō)明
1 _DATE_ “MMM DD YYYY”格式表示當(dāng)前日期。
2 _TIME_ “HH:MM:SS”格式表示當(dāng)前時(shí)間。
3 _FILE_ 表示當(dāng)前文件名。
4 _LINE_ 表示當(dāng)前行。
5 _STDC_ 當(dāng)編譯器符合ANSI標(biāo)準(zhǔn)時(shí),它被定義為1

C語(yǔ)言預(yù)定義的宏示例

為了更好地演示如何使用C語(yǔ)言預(yù)定義的宏,我們創(chuàng)建一個(gè)源文件: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__); 不常用
}

執(zhí)行上面示例代碼,得到以下結(jié)果 -

File :f:\worksp\clanguage\preprocessor\preprocessor\predefined-macros.c
Date :Aug 17 2017
Time :17:33:25
Line :6