2017-01-28 5 views
0

Я не уверен, почему мне не разрешено это делать. Может кто-нибудь объяснить, как обойти ошибку компиляции. Я новичок в C, пришел с Java.Использование #define с состоянием переключателя в C

ошибка: ожидается ':' или '...' before ';' Маркер

#define NORTH 1; 

int main (void){ 
switch (functionCallThatReturnsAnInt()){ 
    case NORTH : //compile time error here 
     printf("NORTH"); 
     break; 
    case 2 : // no compile time error 
     printf("2"); 
     break; 
    //removed rest to reduce clutter 
    } 
} 

int functionCallThatReturnsAnInt(void){ 
    return NORTH; 
} 
+1

'#define СЕВЕР 1;' -> '#define NORTH 1' – BLUEPIXY

+2

' #define NORTH 1'. Нет точки с запятой. – PSkocik

+0

'# define' выполняет замену текста. Все после идентификатора до конца строки копируется дословно. Поэтому после предварительной обработки строка 'case NORTH:' становится 'case 1; : '. – user3386109

ответ

1

Для будущих зрителей:

Как было отмечено выше, @PSkocik и @BLUEPIXY при использовании определяют оставить от точки с запятой.

Вместо

#define NORTH; 

Использование

#define NORTH 
Смежные вопросы