1

私はCの初心者です。「#DEFINE」とcharbuf[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:エラー:'='トークンの前に式が必要です」というsystaxエラーを教えてくれます。しかし、「if(strcmp(buf、SRV_SHOWMENU)== 0)」に変更すると、1回の比較で問題ありません。

ありがとうございました。

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 に答える