Проблема со сравнением строк (strcmp) в C

Я новичок в C. Я хочу сравнить строку, которую использую '#DEFINE' и char buf[256]. Это мой код.

#define SRV_SHOWMENU "SRV_SHOWMENU"
#define SRV_LOGIN_TRUE = "SRV_LOGIN_SUC"
#define SRV_LOGIN_FAIL = "SRV_LOGIN_FAIL"
#define SRV_REGISTER_OK = "SRV_REGISTER_SUC"
#define SRV_REGISTER_FAIL = "SRV_REGISTER_FAIL"
char buf[256];      // buffer for client data
...
...
...
...
...
...
if(strcmp(buf,SRV_SHOWMENU) == 0 || strcmp(buf,SRV_REGISTER_FAIL) == 0)
{

}

Мой компилятор C сообщает мне о системной ошибке, что «../src/server.c:417: ошибка: ожидаемое выражение перед токеном ‘=’». Но если я изменю на «if(strcmp(buf,SRV_SHOWMENU) == 0)», достаточно будет только одного сравнения.

Спасибо.


person korrawit    schedule 30.08.2010    source источник
comment
Удалите знаки = в строках со 2 по 5.   -  person Pascal Cuoq    schedule 30.08.2010


Ответы (2)


Вам не нужно использовать знак «=» после #define. Вы можете прочитать больше здесь.

person taskinoor    schedule 30.08.2010

Как уже было сказано, удалите знаки = в #define

#define SRV_SHOWMENU "SRV_SHOWMENU" 
#define SRV_LOGIN_TRUE "SRV_LOGIN_SUC" 
#define SRV_LOGIN_FAIL "SRV_LOGIN_FAIL" 
#define SRV_REGISTER_OK "SRV_REGISTER_SUC" 
#define SRV_REGISTER_FAIL "SRV_REGISTER_FAIL" 
char buf[256];      // buffer for client data 
... 
if(strcmp(buf,SRV_SHOWMENU) == 0 || strcmp(buf,SRV_REGISTER_FAIL) == 0) 
{ 

}

С = пре-компилятор превратит if(strcmp(buf,SRV_SHOWMENU) == 0 || strcmp(buf,SRV_REGISTER_FAIL) == 0) в

if(strcmp(buf,"SRV_SHOWMENU") == 0 || strcmp(buf,= "SRV_REGISTER_FAIL") == 0) 
person Binary Worrier    schedule 30.08.2010