4
有沒有一種方法來#define
宏可變長度參數?具有可變長度參數的宏
#define CALL(ar1, ar2, ar3)
do something
#endif
在C代碼
CALL(0);
CALL(0,1);
CALL(0,1,2)
所有調用上述CALL宏。如果沒有使用ar2,ar3,則預處理器會忽略ar2或ar3的行。
有沒有一種方法來#define
宏可變長度參數?具有可變長度參數的宏
#define CALL(ar1, ar2, ar3)
do something
#endif
在C代碼
CALL(0);
CALL(0,1);
CALL(0,1,2)
所有調用上述CALL宏。如果沒有使用ar2,ar3,則預處理器會忽略ar2或ar3的行。
是的,看看這個:http://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html
關鍵詞是__VA_ARGS__
(可變參數宏):
宏可以聲明爲接受可變數量的參數就像一個功能。定義宏的語法與函數的語法相似。下面是一個例子:
#define eprintf(...) fprintf (stderr, __VA_ARGS__)
我讀過這個。這不是我想要的。這要求宏體具有采用__VA_ARGS__的函數。 – richard
請在搜索之前先搜索一下,或者只是在我最喜歡的搜索引擎中放入「可變長參數的宏」會帶來很多結果。 –