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内定义的变量了
本人以前也做过硬件编程方
相关问答:
13个人围成一圈,从第一个人开始顺序报号1,2,3。凡报到3者退出圈子,找出最后留在圈子中的人原来的序号
结果应该是13 可我的程序的结果是11 希望好心人帮改一下
#include <stdio.h>
#include < ......
const int num=100
float neiji(float [num]b, float [num]c)
{
int p;
float nj ......
以前在VC里面建一个工程,都只用一个 .c 文件,昨天在一个工程里用了两个 .c文件了,遇到问题了,请大家指点。比如:
File1.c Fil ......
下面是我的代码 从内存写入文件正确 但从文件读入内存都是乱码 而且程序崩溃 请c高手指点
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct inf
{
& ......
已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列
连接函数有问题 请高手指点
#include <stdio.h>
#include <stdlib.h>
struct student{
int ......