我一直在努力让我最初在 mac 上构建的一些代码在 Visual Studio 2008 Express 下运行,并且在我用于断言代码的可变参数宏中遇到了一个奇怪的问题:
宏定义为:
#define SH_ASSERT( assertID, exp, description, ... ) shAssertBasic( int(exp), assertID, description, __LINE__, __FILE__ , ##__VA_ARGS__ )
这一切都在 gcc(在 osx 下)下运行良好,并且曾经在 VS 2005 下运行,但是在 2008 年我收到以下警告:
warning C4002: too many actual parameters for macro 'SH_ASSERT'
调用代码很简单:
SH_ASSERT(0, donkeys != aliens , "Donkeys are Aliens Code : Code %d condition %d" , 55, 666);
我确定我错过了一些简单的东西,而我的 google foo 让我失望了……
谢谢。