我目前正在学习如何将HC08系列飞思卡尔微控制器与codewarrior IDE一起使用(版本6.3)。 我写了一个简单的程序,但无法编译。
#include <hidef.h>
#include "derivative.h"
void main(void) {
EnableInterrupts;
/* include your code here */
DDRA |= 0x03;
PTA |= 0x01;
unsigned int counter; << error here "Error : C2801: '}' missing
counter = 50000;
while(counter--);
PTA ^= 0x03;
for(;;) {
__RESET_WATCHDOG(); /* feeds the dog */
}
}
知道它可能有什么问题吗?所有括号都匹配。也许它是微控制器具体的东西?
答案 0 :(得分:5)
我使用过那个IDE&amp;编译器,但不记得它是否支持1990或1999 C标准。
块中的可执行代码之后的变量定义在C99之前是不合法的。由于这正是您收到错误消息的位置,因此编译器似乎不支持C99。尝试将变量定义移动到main的开头。
void main(void) {
unsigned int counter;
EnableInterrupts;
// the rest of the code
}
您还可以引入一个新块。这并不常见。对您的代码示例没有特别的帮助。值得指出的是,它适用于循环(或if语句)的括号内部,并且有时可用于为这样的块提供局部变量。
void main(void) {
EnableInterrupts;
DDRA |= 0x03;
PTA |= 0x01;
{ // start of nested scope
unsigned int counter;
counter = 50000;
while(counter--);
} // "counter" ceases to exist here
PTA ^= 0x03;
for(;;) {
__RESET_WATCHDOG(); /* feeds the dog */
}
}
答案 1 :(得分:3)
您的编译器可能是C89编译器或类似编译器。这意味着变量定义需要位于范围的顶部,因此:
void main(void) {
unsigned int counter;
EnableInterrupts;
/* include your code here */
DDRA |= 0x03;
PTA |= 0x01;