, __VA_ARGS__) #endif ...
本文說的 VA ARGS ,就是一個可變參數宏,與printf中可變參數的宏定義一個道理,是新C 規范中增加的。 VA ARGS 詳情內容 .關於 VA ARGS VA ARGS 它是一個可變參數的宏,就是將左邊宏中 ... 的內容原樣抄寫在右邊 VA ARGS 所在的位置。 要注意的是,printf 的輸出格式是括號內左邊是字符串,右邊是變量,而且右變量與左輸出格式是一一對應的,不對應就會出錯。 ...
2019-12-16 13:35 0 283 推薦指數:
, __VA_ARGS__) #endif ...
1. 調試功能一般會使用到宏+可變參數的方式 1.1 ##__VA_ARGS__ 之詳細解析 例如: case A. #define my_print1(...) printf(__VA_ARGS__) my_print1("i=%d,j=%d\n ...
,如: 其中,...表示可變參數列表,__VA_ARGS__在預處理中,會被實際的參數集(實參列表)所替換。 同時g ...
【1】變長參數的宏定義以及__VA_ARGS__ 在C99標准中,我們就已經可以使用變長參數的宏定義。 變長參數的宏定義是個神馬?就是在宏定義的參數列表中最后一個參數為省略號。 而現在C++ 11中,使用預定義宏__VA_ARGS__可以在宏定義的實現部分替換省略號所代表的字符串。 原書 ...
在GNU C中,宏可以接受可變數目的參數,就象函數一樣,例如: #define pr_debug(fmt,arg...) \ printk(KERN_DEBUG fmt, ##arg) 用可變參數宏(variadic macros)傳遞可變參數表 你可能很熟悉在函數中使用可變參數 ...
Returns NARG, the number of arguments contained in __VA_ARGS__ before expansion as far as NARG is >0 and <64 (cpp limits): [..] stands ...
# 用來把參數轉換成字符 #include <stdio.h> #define FUN(X) (printf("%s=%d\n",#X,X)) /* #用來把參數 ...
1.#的用法 假如希望在字符串中包含宏參數,ANSI C允許這樣作,在類函數宏的替換部分,#符號用作一個預處理運算符,它可以把語言符號轉化程字符串。例如,如果x是一個宏參量,那么#x可以把參數名轉化成相應的字符串。該過程稱為字符串化(stringizing). 第一次調用宏時使用 ...