#include<stdio.h>#include<reg51.h>//实例12:用自增运算控制P0口8位LED流水花样#include<reg51.h> //包含单片机寄存器的头文件/******************************************************函数功能:延时一段时间******************************************************/void delay(void) { unsigned int i; for(i=0;i<20000;i++) ;}/******************************************************函数功能?:主函数******************************************************/void main(void) { P2=0X12; unsigned char i; for(i=0;i<255;i++) //注意i的值不能超过255 { P0=i; //将i的值送P0口 delay(); //调用延时函数}}
这个程序我都看得懂 但是就是编译不通过 提示为:NEW.C(20): error C141: syntax error near 'unsigned' 但是若是我把程序的P2=0X12;这个放到下面 就ok了 这是正确的:#include<stdio.h>#include<reg51.h>//实例12:用自增运算控制P0口8位LED流水花样#include<reg51.h> //包含单片机寄存器的头文件/******************************************************函数功能:延时一段时间******************************************************/void delay(void) { unsigned int i; for(i=0;i<20000;i++) ;}/******************************************************函数功能?:主函数******************************************************/void main(void) { unsigned char i; P2=0X12; for(i=0;i<255;i++) //注意i的值不能超过255 { P0=i; //将i的值送P0口 delay(); //调用延时函数}} 问这是怎么回事 是keilc的BUG么
此帖出自
小平头技术问答
C语言的标准是ANSI C,这些标准呢,并不是一成不变的。
这个俺不是很清楚,不过你的这个问题俺碰到过,当时在KEIL里我也不知道怎么回事,后来有一次在gcc里遇到,我终于知道了为什么。
如果2 3 4 L的三位大大说的这样。
一般情况下,在一个函数体,我们都是首先完成变量定义,再来写语句。
但是,有时候,我们会看到这种很操蛋但是感觉很爽的写法,比如这个
for(int i = 0;i < 3;i++)
.....
多爽啊!是的,刚开始看到这样的写法我也激动了好久,多好,啥时候想循环就定义一个循环变量。
然而,很抱歉的说,这是C99的标准中新增加的内容,在VC上我试过没啥问题,但是在其他大多数基于标准C,好像是8几年制定的。就对这个不感冒。
另外说一句:C99是个不太受欢迎的标准,比如说,我们的keil和GCC就不鸟他。
一周热门 更多>