В Visual Studio 2005 у меня есть макрос, который выглядит следующим образом (пример !!):
#define MY_CALL(FUN, ...) \
if(prepare(x, y)) { \
FUN(__VA_ARGS__); \
}
/**/
Пока функция принимает хотя бы один аргумент, I ' m нормально.
Когда функция принимает нулевые аргументы, препроцессор «услужливо» удаляет «конечную запятую», раскрывая что-то вроде этого:
if(prepare(x y)) { funct(); }
Отлично, не так ли?
Как я могу исправить этот макрос, так что он будет работать с нулем __ VA_ARGS __
в Visual C ++ (VS 2005)?
Очевидно , это ошибка в VS2005 .