[討論] 如何將#define用於不定參數函數

作者: MaxHaru (懂得放手..才是王道)   2016-02-28 22:16:45
各位好,
一般來說, #define可以用來定義function
Ex: void Func(unsigned char a, unsigned char b);
#define Func1(A) Func(1, A)
但不定參數函數有辦法用#define來定義嗎?
Ex: void Func(unsigned char a, unsigned char b, ...);
#define Func(A, ...) Func(1, A, ...)
我有試著嚐試用上面的方法來定義, 但似乎行不通..
這需要有什麼特別的方法來處理嗎?
謝謝賜教..
作者: godman362 (蕭青)   2016-02-28 22:24:00
__VA_ARGS__
作者: LiloHuang (十年一刻)   2016-02-28 22:25:00
#define Func(A, ...) Func(1, A, __VA_ARGS__)
作者: dsync (→人正真好)   2016-03-02 13:41:00
加上## Func(1, A, ##__VA_ARGS__)
作者: LPH66 (-6.2598534e+18f)   2016-03-02 14:11:00
樓上這個加 ## 的作用是在 __VA_ARGS__ 為空時吃掉逗號不過這是 gnu-extension, 只在 gnu 系編譯器有用
作者: firejox (Tangent)   2016-03-05 20:26:00
#define Func(...) Func(1, __VA_ARGS__)如果不要 gnu-extension 可以這麼寫

Links booklink

Contact Us: admin [ a t ] ucptt.com