C C 巨集的高階使用1 0

2021-07-25 20:28:23 字數 1247 閱讀 7004

單個#

引例1.

#include

#define p(x) printf("%s=%d\n",#x,x)

int main()

引例2

#include

#define printfun(x) printf("%s",#x)

void gogogo() /* 在函式裡面列印函式名 */

int main()

2.兩個 ##

引例1

#include

.h>

#define

pp(x) printf##x

void printf1()

void printf2()

void printf3()

int main()

引例2

#include

#define p(x) printf("%s=%d\n",#x,x)

#define i(x) i##x

int main()

3.巨集變數

巨集變數主要有

__file__ :巨集在預編譯時會替換成 當前程式的檔名

__line__ :巨集在預編譯時會替換成 當前行數

__function__:巨集在預編譯時會替換成 當前的函式名稱

#include

#include

void sss()

int main()

列印的結果

function:main

function:sss

file:e:\code2017\test2.cpp

line:13

4.__va_args__ 可變引數巨集

#include

#define myprint(fm,...) printf(fm,__va_args__)

int main()

這裡,如果可變引數被忽略或為空,』##』操作將使預處理器(preprocessor)去除掉它前面的那個逗號

因此應該改為

#include

#define myprint(fm,...) printf(fm,##__va_args__) //加上##

int main()

C C 巨集定義的常見使用

在我們平時的開發工程中,會經常使用到巨集,它功能強大,用的好會帶來意想不到的妙用。今天來整理下一些常見的用法,方便回顧。將其後面的巨集引數進行字串化操作 stringfication 注意 a 忽略傳入引數名前面和後面的空格。b 當傳入引數名間存在空格時,編譯器將會自動連線各個子字串,用每個子字串之...

C C 中巨集使用總結

博主論壇 c c 中巨集總結c程式的源 中可包括各種編譯指令,這些指令稱為預處理命令。雖然它們實際上不是c語言的一部分,但卻擴充套件了c程 序設計的環境。本節將介紹如何應用預處理程式和注釋簡化程式開發過程,並提高程式的可讀性。ansi標準定義的c語言預處理程式包括下列命令 define,error,...

IOS中巨集的高階使用

先說一下本文中會提到的內容 va args file line function 等 巨集變數 先舉乙個例子,會用到上面這些巨集 cpp view plain copy define myprintf printk lch file s,line d,function s,va args file ...