易截截图软件、单文件、免安装、纯绿色、仅160KB

C/C++的一个简单问题,请教。。

void Main(void)
{
    while(1)
    {
    char aa; 
    Uart_Printf("\nEnter the 'Y' or 'y' to test:");
    aa= Uart_Getch();
    Uart_Printf("%c",aa);
        if((aa=='Y')||(aa=='y'))
          {
      (void (*)(void))Test_Iic();
          }
    }
}

为什么把IF循环的“{}”括号去掉,再把"while(1){}"去掉编译器(ads1.2)会报错:expect but found 'char'和undecleared name, inventing 'extern int aa'的错误?这两个东西不去去掉能编译通过。哪个大哥大姐知道为什么??
显而易见

你在{}中有变量的定义,去掉以后,编译器无法将变量压栈,也就是无法为变量分配内存。当然出错了。另外,把{}去了,while和if只认识前一条语句。对其它语句,没有控制力了。

if中的花括号可以去掉,但while的不行。因为C90规定所有变量声明和定义必须放在可执行语句之前。while去掉括号后那个aa变成在while(1)之后,非法。

帮顶!

学习了

while(1){};整体都去掉了啊,不是只去while(1)的括弧啊。。。。

呵呵,二楼说的很好,显而易见的问题,去掉了while循环中就一条语句,就是变量定义,出了循环,此变量就无意义,你的if在while去掉括号之后,变成了和while同级别的语句,当然不可能找到while内定义的变量了


本人以前也做过硬件编程方


相关问答:

ftp上传下载c文件方式

在ue中从远程unix用二进制方式下载c文件到本地,修改之后用二进制方式上传到unix中,再用vi打开该文件,每行后面就会有一个^M的换行符,如果采用ascii方式下载,二进制方式上传的话就没有^M,那请问这样会对程序文件 ......

mysql C API求助

写了一段程序
C/C++ code:

..
MYSQL* mysql;
MYSQL_RES* res;
//我想实现一个查看有没有 mysql结构,如果没有就连接。
void connect()
{
mysql_init(mysql);
mysql_realconnect(. ......

两个C文件的问题

以前在VC里面建一个工程,都只用一个 .c 文件,昨天在一个工程里用了两个 .c文件了,遇到问题了,请大家指点。比如:
File1.c Fil ......

两个链表的连接问题 c高手请进

已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列
连接函数有问题 请高手指点
#include <stdio.h>
#include <stdlib.h>
struct student{
int ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号