1
我有這個簡單的(無用)代碼來說明這個問題:C++宏和模板,多個參數錯誤
template<typename _Tx, typename _Ty>
struct foo{};
#define TO_STRING(Type) #Type
int main()
{
std::string sInt = TO_STRING(int);
std::string sfoo1 = TO_STRING(foo<int, float>); //warning and unexpected value - "foo<int"
std::string sfoo2 = TO_STRING((foo<int, float>)); //no warning, still unexpected value "(foo<int, float>)"
}
有沒有辦法通過使用多個參數的宏模板,而無需使用 ()
?
不,沒有辦法。 – 2013-04-10 12:35:38
你用什麼編譯它,所以當你將1或2個參數傳遞給宏時它會默默吞下? – 2013-04-10 12:37:51
@RomanSaveljev Visual Studio 2010 – Felics 2013-04-10 12:39:21