оператор переключения с макросами в C с Visual Studio 2010 - PullRequest
0 голосов
/ 28 декабря 2011

Я пытаюсь сделать что-то подобное

#define GETCART1 0;
#define GETCART2 1;

void helper(int *Array,int length,int counter, int option){
    if (length > counter){
        switch(option){
        case (GETCART1) :

            break;
        }//switch
    }
}

и я получаю ошибку компиляции, когда я заменяю GETCART1 на 0, все работает нормально. Почему это?

1 Ответ

7 голосов
/ 28 декабря 2011

Удалите точки с запятой из определений.

#define GETCART1 0;
                  ^ Drop this

Если этого не сделать, к моменту завершения препроцессора ваш код будет выглядеть примерно так:

switch(option){
case (0;) :
       ^
    break;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...