2
我有一堆源代碼使用雙括號的一堆宏調用,其中第二個arg和forward是打印語句的可變參數。從C++宏中刪除多餘的括號
DEBUG((1,"here is a debug"))
DEBUG((1,"here is %d and %d",42,43))
等。
我想寫可打印ARGS 2 -...宏,但我無法弄清楚如何刪除多餘的括號,所以我可以訪問ARGS。
也就是說,這顯然是行不通的:
#define DEBUG(ignore,...) fprintf(stderr,__VA_ARGS__)
而下面的企圖偷偷摸摸也失敗(與「DEBUG2沒有定義」):
#define DEBUG2(ignore,...) fprintf(stderr,__VA_ARGS__)
#define DEBUG(...) DEBUG2
未經編輯的所有宏調用去除parens,我怎樣才能定義一個宏來做到這一點?
是啊 - 我只是想通了這一點,雖然你發佈你的答案首先讓您得到的信用! :) –