2013-07-13 71 views
2

以下代碼是上VC好++ 2012Variadic宏需要一個無意義的宏讓它工作?

#include <algorithm>  

#define MAX_OF_2(a,b) std::max(a,b) 
#define FOO(a)   a 

// work 
#define MAX2(...)  FOO(MAX_OF_2(__VA_ARGS__)) 

// Not work 
// #define MAX2(...)  MAX_OF_2(__VA_ARGS__) 

int main() 
{ 
    int i = MAX2(1,2); 
} 

它不能在不使用FOO宏編譯。它顯示了MAX_OF_2的實際參數。編譯器爲什麼或者有什麼錯誤?

回答

3

這是一個已知bug in msvc

在你的情況__VA_ARGS__被認爲好像它是一個需要擴張的宏。