もともとMacでビルドされたコードの一部をVisualStudio2008 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);
私は私が何か単純なものを見逃していると確信しています、そして私のグーグルfooは私を失敗させています...
ありがとう。