看板 C_and_CPP 關於我們 聯絡資訊
各位好, 一般來說, #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, ...) 我有試著嚐試用上面的方法來定義, 但似乎行不通.. 這需要有什麼特別的方法來處理嗎? 謝謝賜教.. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.171.215.105 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1456669008.A.AE2.html
godman362: __VA_ARGS__ 02/28 22:24
LiloHuang: #define Func(A, ...) Func(1, A, __VA_ARGS__) 02/28 22:25
感謝樓上兩位的賜教.. 又學到一招了.. ※ 編輯: MaxHaru (118.171.215.105), 02/29/2016 13:30:41
dsync: 加上## Func(1, A, ##__VA_ARGS__) 03/02 13:41
LPH66: 樓上這個加 ## 的作用是在 __VA_ARGS__ 為空時吃掉逗號 03/02 14:11
LPH66: 不過這是 gnu-extension, 只在 gnu 系編譯器有用 03/02 14:12
firejox: #define Func(...) Func(1, __VA_ARGS__) 03/05 20:26
firejox: 如果不要 gnu-extension 可以這麼寫 03/05 20:28