單個#
引例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 ...