2016-05-24 57 views
1

我得到了錯誤Error[Pe018]: expected a ")"CPU_state == cpuStateOff
當我將cpuStateOff更改爲0時無影響。我不知道爲什麼。預計在IAR IDE中有一個「)」

在我PERIPHERAL_APP.h

#ifndef __PERIPHERAL_APP_H 
#define __PERIPHERAL_APP_H 
// CPU state 
#define CPU_STATE_OFF  0; 
#define CPU_STATE_ON  1; 
#endif 

在我main.c

#include "PERIPHERAL_APP.h" 
void main(void) 
{ 
    initMSP430(); 
    _EINT();        
    for (;;) 
    { 
     if (cpuState == CPU_STATE_OFF) // The error is hear 
     { 
      __bis_SR_register(LPM3_bits); 
     } 
     else 
     { 
      __bis_SR_register(LPM0_bits); 
     } 
    } 
} 
+2

'#define cpuStateOff 0;'刪除分號 –

+0

與您的問題無關,但請學會縮進您的代碼。這對編譯器無關緊要,但對於人來說,可讀性是非常重要的,至少*一些*代碼縮進使得它更容易閱讀(因此更容易維護)。 –

+0

也與您的問題無關,但符號名稱,即使是以雙下劃線開頭的預處理器名稱,或者以單個下劃線開頭且後面帶有大寫字母的字符,都將保留爲*「實施」(編譯器和標準庫)所有範圍。你不應該爲自己的名字使用這樣的名字。 –

回答

4

預處理器宏並不是C語句,因此不需要語句終止像;

會發生什麼事是,當預處理器替代宏cpuStateOff它採用了整個體宏觀的,即0;導致代碼像

if (CPU_state == 0;) // Code after macro replacement 

大多數編譯器和環境有選擇停止預處理後,如果你使用它,你可以看到編譯器「正確」將看到的代碼。

+0

我不知道IDE提供了一種查看預處理源的方法。很高興知道! –

+0

謝謝!我修復它,它的工作原理! – user3778432