考慮以下代碼:MSVC不展開__VA_ARGS__正確
#define F(x, ...) X = x and VA_ARGS = __VA_ARGS__
#define G(...) F(__VA_ARGS__)
F(1, 2, 3)
G(1, 2, 3)
預期的輸出是X = 1 and VA_ARGS = 2, 3
兩個宏,這就是我與海灣合作委員會獲得,但是,MSVC擴展了這個爲:
X = 1 and VA_ARGS = 2, 3
X = 1, 2, 3 and VA_ARGS =
也就是說,__VA_ARGS__
被擴展爲單個參數,而不是分解爲多個參數。
任何方法?
我的第一個想法是獲得更好的編譯器。如果這是您在MSVC遇到的第一個也是最嚴重的錯誤,那麼您會遇到大量令人不快的意外... – 2011-02-27 17:10:55
@R:沒有選項:P – uj2 2011-02-27 17:16:50