奇怪 这样赋值不行么 只能在循环里赋值?

kzzk 2011-07-21 11:08:31
void main (void){ //主程序
key=1;
LED=1;
unsigned int a;//这里 编译提示出错Keil uVision3
a=1;
while(1){




if (key==0){
DELAY_MS (60);
if (key==0){
LED=~a;
a=~a;
}

} // key=LED;
}
}

123.C(40): error C141: syntax error near 'unsigned'
123.C(40): error C202: 'a': undefined identifier
123.C(41): error C202: 'a': undefined identifier
123.C(50): error C202: 'a': undefined identifier
123.C(51): error C202: 'a': undefined identifier
...全文
95 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kamfun 2011-07-21
  • 打赏
  • 举报
回复
呵呵~~你编的是单片机C语言吧?我也试过这种情况,是这样的。如果你的LED定义时只是某一位,例如p2^1位定义,而当你说用的变量a 为unsigned int 是八位的吧?LED=~a;是某一位对应8位时不能对应,则会提示出错信息。
jernymy 2011-07-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jackyjkchen 的回复:]
因为你是c89编译器(如VC),必需在函数头或者大括号作用预头部声明变量。

如果是C++编译器或C99编译器,任意
[/Quote]

正解
你把文件改名.cpp,使用c++编译器也没有问题了
kevin_zlg 2011-07-21
  • 打赏
  • 举报
回复
楼上说的都对,c89标准中变量的声明要在程序块的头部,所以和循环里赋值是没关系的哈
xunxun 2011-07-21
  • 打赏
  • 举报
回复
老标准编译器不能随时声明变量
jackyjkchen 2011-07-21
  • 打赏
  • 举报
回复
因为你是c89编译器(如VC),必需在函数头或者大括号作用预头部声明变量。

如果是C++编译器或C99编译器,任意
kzzk 2011-07-21
  • 打赏
  • 举报
回复
void main (void){ //主程序

bit a=1;//这个却可以赋值
key=1;
LED=1;
while(1){

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧