Я работал над тем, чтобы часть моего кода, изначально построенного на 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 подводит меня ...
Спасибо.