在 IAR IDE 中需要一个“)”
expected a ")" in IAR IDE
我在 CPU_state == cpuStateOff
处收到错误 Error[Pe018]: expected a ")"
。
当我将 cpuStateOff
更改为 0
时就可以了。不知道为什么。
在我的 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);
}
}
}
预处理器宏不是 C 语句,因此不需要像 ;
.
这样的语句终止符
发生的事情是,当预处理器替换宏 cpuStateOff
时,它使用宏的 whole 主体,即 0;
,这导致代码如下
if (CPU_state == 0; ) // Code after macro replacement
大多数编译器和环境都有在预处理后停止的选项,如果您使用它,您可以确切地看到编译器 "proper" 将看到的代码。
我在 CPU_state == cpuStateOff
处收到错误 Error[Pe018]: expected a ")"
。
当我将 cpuStateOff
更改为 0
时就可以了。不知道为什么。
在我的 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);
}
}
}
预处理器宏不是 C 语句,因此不需要像 ;
.
发生的事情是,当预处理器替换宏 cpuStateOff
时,它使用宏的 whole 主体,即 0;
,这导致代码如下
if (CPU_state == 0; ) // Code after macro replacement
大多数编译器和环境都有在预处理后停止的选项,如果您使用它,您可以确切地看到编译器 "proper" 将看到的代码。