[讨论] 如何将#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