2010-08-30 37 views
1

我是C新手。我想比较字符串,我使用'#DEFINE'和char buf [256]。 这是我的代码。问题与字符串比较(strcmp)在C

#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编译器告诉我systax错误 “../src/server.c:417:错误:预期表达式之前‘=’令牌”。但如果我更改为“if(strcmp(buf,SRV_SHOWMENU)== 0)”,只需进行一次比较即可。

谢谢。

+7

中的行2卸下'='迹象到5。 – 2010-08-30 14:35:54

回答

6

#define后不需要使用'='符号。你可以阅读更多here

4

正如已经说过的,取出=迹象#定义

#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)