Неожиданный в макросе формальный список параметров Ошибка - PullRequest
3 голосов
/ 02 марта 2011

Я студент-стажер, и мой начальник сказал мне сделать перенос с Linux c на Visual C ++.

Когда я строил кодировку, я обнаружил эту ошибку «неожиданно в списке формальных параметров макроса», вот код

#define cache_info(format, msg...)  
    do { \
        ;\
    } while (0)  

Я не знаю, что не так и для чего нужна кодировка.

Я не могу также спросить программиста Linux, так как он отсутствует. Может ли кто-нибудь мне помочь ???

Ответы [ 3 ]

6 голосов
/ 02 марта 2011

Похоже, ваша версия Visual C ++ не поддерживает переменные макросы.

вам может понадобиться что-то подобное, чтобы заставить его работать.

#define FUNC(foo)  ThisFunc foo

void ThisFunc(int, ...);

int main()
{
    FUNC((123, 456));
}

или вы могли просто пропустить запятую? ....

#define cache_info(format, msg,...)  
2 голосов
/ 02 марта 2011

Я думаю, что проблема может быть в одной из двух вещей.

Во-первых, ваш макрос определен как

cache_info(format, msg...)

Но вы, вероятно, хотели написать

cache_info(format, msg, ...)

Хотя это может быть просто опечатка в вашем оригинальном сообщении.

Что еще более важно, макросы с переменным числом аргументов («переменные макросы») не поддерживаются в C ++; они существуют только в C. Если вы пытаетесь скомпилировать этот код C с помощью компилятора C ++, компилятор должен выдать здесь ошибку, поскольку код C ++ недопустим.

0 голосов
/ 27 июня 2014

если вы используете 64-битную ОС Windows и Visual Studio, попробуйте после запуска этого bat-файла: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ Common7 \ Tools \ vsvars32.bat

Он зарегистрирует настройки env. У меня это сработало ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...