作者MaxHaru (懂得放手..才是王道)
看板C_and_CPP
標題[討論] 如何將#define用於不定參數函數
時間Sun Feb 28 22:16:45 2016
各位好,
一般來說, #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
推 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