c語言的變參使用 可變引數巨集 標準預定義巨集

2021-08-30 15:44:56 字數 647 閱讀 7354

gcc的預處理提供的可變引數巨集定義真是好用:

#ifdef debug

#define dbgprint(format,args...) /

fprintf(stderr, format, ##args)

#else

#define dbgprint(format,args...)
#endif

如此定義之後,**中就可以用dbgprint了,例如dbgprint(「aaa %s」,file);。

ansi c標準中有幾個標準預定義巨集(也是常用的):

line:在源**中插入當前源**行號;

file:在原始檔中插入當前源檔名;

date:在原始檔中插入當前的編譯日期

time:在原始檔中插入當前編譯時間;

stdc:當要求程式嚴格遵循ansi c標準時該標識被賦值為1;

__cplusplus:當編寫c++程式時該識別符號被定義。

編譯器在進行原始碼編譯的時候,會自動將這些巨集替換為相應內容。

C語言可變引數巨集

歲月不饒人,這年紀大了記憶力真是差了很多。今天寫程式需要用到可變引數的巨集,可是忘了怎麼寫,這倒也沒什麼,因為我一向是不記憶這些語法細節的,反正我知道程式裡有個地方用到了這種技巧,但是可悲的是我忘了在哪個地方。搜尋?語法都忘了蒐個p呀。只好憑著印象,在自己負責的模組 中找了一圈,花了十幾分鐘才終於在...

C語言變參使用

c語言中有很多變參的使用,例如printf 的原型是int printf const char fmt,那麼c語言是如何解析和處理這些變參的呢?下面進行簡單的總結 c語言中定義了下面的一些巨集,專門用來處理變參 va start va list ap,char fmt va arg va list ...

C語言變參使用

c語言中有很多變參的使用,例如printf 的原型是int printf const char fmt,那麼c語言是如何解析和處理這些變參的呢?下面進行簡單的總結 c語言中定義了下面的一些巨集,專門用來處理變參 va start va list ap,char fmt va arg va list ...