[問題] 想問一行程式的解析

看板C_and_CPP (C/C++)作者 (阿吉)時間16年前 (2010/01/11 02:24), 編輯推噓2(209)
留言11則, 5人參與, 最新討論串1/1
遇到的問題: 只是不懂這行程式的意思,不知道有沒有人能解答 #define MSG(format, arg...) printk(KERN_INFO "DEBUG CARD: " format "\n", ## arg) 我想知道那個arg...的用法表示什麼 跟後面那兩個##表示的是什麼 如果有人知道真的是很感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.51.146 ※ 編輯: dmx6 來自: 220.132.51.146 (01/11 02:27)

01/11 02:34, , 1F
stdarg.h
01/11 02:34, 1F

01/11 02:36, , 2F
我是想問那個...啦 不是arg啦^^
01/11 02:36, 2F

01/11 02:37, , 3F
##的我查到了 只剩...還不知道
01/11 02:37, 3F

01/11 02:47, , 4F
"..."表示n個變數,n = 0, 1, 2, ...
01/11 02:47, 4F

01/11 02:55, , 5F
那個是不定個數的 define 參數用法
01/11 02:55, 5F

01/11 02:55, , 6F
, ## arg 除了會把那些東西展開之外
01/11 02:55, 6F

01/11 02:56, , 7F
如果 arg 是空的會把它前面那個 , 給拿掉
01/11 02:56, 7F

01/11 02:56, , 8F
這樣避免展開後多一個 , 的問題
01/11 02:56, 8F

01/11 02:57, , 9F
另外這個參數也可以不命名只寫 ...
01/11 02:57, 9F

01/11 02:57, , 10F
這時可以用 __VA_ARGS__ 來代表它
01/11 02:57, 10F

01/11 11:33, , 11F
推!
01/11 11:33, 11F
文章代碼(AID): #1BIXjfVZ (C_and_CPP)
文章代碼(AID): #1BIXjfVZ (C_and_CPP)