У меня есть код:Препроцессор мультипроцессора в MSVC?
#define __IGNORE__(...)
#define XUJ(x)); if (x) { test2(); } __IGNORE__(0
void test2() {
}
void test() {
}
int main() {
int x = 0;
test(XUJ(x));
return 0;
}
GCC компилирует, но cl.exe имеет ошибки:
$ cl 1.cpp
1.cpp(14): error C2059: syntax error: ;
... Но если я распаковывать макросы:
test(); if (x) { test2(); } __IGNORE__(0);
Он компилирует нормально , MSVC 2015 компилятор не поддерживает многопроцессорный препроцессор? O_O
upd: hm .... где брекеты? о_О
$ cl /E 1.cpp
1.cpp
#line 1 "1.cpp"
void test2() {
}
void test() {
}
int main() {
int x = 0;
test(); if (x) { test2(); } ;
return 0;
}
Убедитесь, что установлены последние обновления для вашего компилятора. Также проверьте с VS2017, и если один или оба повторите ошибку, отправьте отчет об ошибке в Microsoft Connect. – rubenvb
Я не получаю downvotes. Вопрос может быть недостаточно написанным и содержать многие смайлики, но проблема явно узнаваема, и OP даже предоставил MCVE. –