1

我是 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: error: expected expression before '=' token”。但是,如果我更改为“if(strcmp(buf,SRV_SHOWMENU) == 0)”,则只需进行一次比较即可。

谢谢你。

4

2 回答 2

6

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

于 2010-08-30T14:37:04.893 回答
4

如前所述,删除=#defines 中的符号

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

}

有了=in,预编译器就会if(strcmp(buf,SRV_SHOWMENU) == 0 || strcmp(buf,SRV_REGISTER_FAIL) == 0)变成

if(strcmp(buf,"SRV_SHOWMENU") == 0 || strcmp(buf,= "SRV_REGISTER_FAIL") == 0) 
于 2010-08-30T14:39:26.767 回答