2017-01-28 14 views
0

なぜ私はこれを実行できないのか分かりません。誰かがコンパイルエラーを回避する方法を説明することができます。私はC言語に新しい、Javaから来た。#defineをC言語でスイッチの状態で使用する

エラー:予期しない ':'または '...'の前に ';'将来の視聴者のトークン

+1

'の#define NORTH 1;' - > 'の#define NORTH 1 ' – BLUEPIXY

+2

'の#define NORTH 1'。セミコロンはありません。 – PSkocik

+0

'#define'はテキスト置換を行います。識別子の後ろの行の末尾まですべてがそのままコピーされます。したがって、前処理の後、 'case NORTH:'の行は 'case 1 'になります。 : '。 – user3386109

答えて

1
#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; 
} 

セミコロンをオフのままに定義使用時@PSkocikと@BLUEPIXYによって、上述したように。代わり

#define NORTH; 

使用

#define NORTH 
関連する問題