打印

求助,keil C的问题

[复制链接]
3782|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
低功耗|  楼主 | 2008-12-4 17:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不知为什么以下程序在我的keil uVision3中编译不通过?麻烦大伙帮忙看看是什么问题.
#include <reg52.h>
#define uchar unsigned char
void main(void)
{       
       uchar n=0x01;            
       P1=0xff;    
       uchar a=0x01;
       
}

相关帖子

沙发
低功耗|  楼主 | 2008-12-4 17:35 | 只看该作者

自顶

不知为什么将P1=0xff放在最后就能编译通过。是我的问题还是编译器的问题呢?

使用特权

评论回复
板凳
低功耗|  楼主 | 2008-12-4 17:40 | 只看该作者

想了很久都不知道是什么问题。

大伙们,能帮我复制到你的keil C中,看是否存在这样的问题吗?

使用特权

评论回复
地板
zyok| | 2008-12-4 18:09 | 只看该作者

变量不能定义在语句后...

使用特权

评论回复
5
zyok| | 2008-12-4 18:11 | 只看该作者

这是编译器决定的,有些编译器可以

使用特权

评论回复
6
ljm810010| | 2008-12-4 18:13 | 只看该作者

uchar a=0x01;变量声明必须放在函数起始处

使用特权

评论回复
7
低功耗|  楼主 | 2008-12-4 18:23 | 只看该作者

很多谢大伙们!

每来一次21IC总会有所收获!

使用特权

评论回复
8
原野之狼| | 2008-12-4 19:50 | 只看该作者

这样可以。

#include <reg52.h>
#define uchar unsigned char
void main(void)
{       
       uchar n=0x01;            
       P1=0xff;    
      {
       uchar a=0x01;
      } 
}

使用特权

评论回复
9
ayb_ice| | 2008-12-4 21:34 | 只看该作者

标准的C不可以这样的

使用特权

评论回复
10
最最| | 2008-12-4 22:20 | 只看该作者

学习了,从前都没注意到这个

使用特权

评论回复
11
weishg| | 2008-12-5 15:06 | 只看该作者

re :原野之狼

#include <reg52.h>
#define uchar unsigned char
void main(void)
{       
       uchar n=0x01;            
       P1=0xff;    
      {
       uchar a=0x01;
      } 


这样定义好像a的作用域只在最里面那一级的{},是这样的吗??

使用特权

评论回复
12
chen3bing| | 2008-12-5 15:22 | 只看该作者

是的

使用特权

评论回复
13
耕在此行| | 2008-12-5 21:48 | 只看该作者

呵呵 上次居然没看出问题>

使用特权

评论回复
14
dspjs| | 2008-12-5 21:48 | 只看该作者

re

那a不是只坐家里看日出着啊.潜水学习中。

使用特权

评论回复
15
saul2006| | 2008-12-5 23:31 | 只看该作者

这里n和a有什么区别了?

我也不懂,为什么n不用{}括起来就不会出问题呀?
这里n和a有什么区别呢?请教。。。

使用特权

评论回复
16
王紫豪| | 2008-12-6 01:29 | 只看该作者

C99 标准可以这样!!

使用特权

评论回复
17
weishg| | 2008-12-6 14:31 | 只看该作者

re

标准c规定局部变量要在函数体或者模块的最前面定义
在这里n在main的开头,作为main的局部变量
而a如果不加{},则a也是main的局部变量,也需要在前面定义
但是如果加了{},则a变成了该{}模块内的局部变量,即a的作用域只在{}内
而n的作用域在整个main都有效

这是我的理解,欢迎高手点评

使用特权

评论回复
18
腾腾| | 2008-12-6 16:43 | 只看该作者

这样

#include <reg52.h>
#define  uchar unsigned char 
void main(void)
{       
       uchar n,a;
    n=0x01;            
    P1=0xff;    
        a=0x01;     
}

使用特权

评论回复
19
saul2006| | 2008-12-6 16:50 | 只看该作者

学习了

学习了,要放在起始地方

使用特权

评论回复
20
孤单£风| | 2008-12-6 17:31 | 只看该作者

那位进来回答一下,谢谢了啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

11

帖子

0

粉丝