欢迎光临
我们一直在努力

declaration may not appear after executable

错误名称:declaration may not appear after executable statement in block.

?变量声明不允许出现在语句之后,

int main(void)
{
PLLCON = 1; // 这个(以及下面若干行)就是所谓的“executable statement ”美国高防vps
……
uint8 sec; // 这就是“declaration ”

这种在语句之后声明变量的方式,c++里面是正常的,现在的很多c编译器也允许。
但是最早的c是不许这么写的,要求所有的局部变量必须在函数开头声明,用的keil编译器也是这样要求的。

两种方法来解决这个问题

传统的方盒:修改为正确语句

int main(void)
{

uint8 sec;?
PLLCON = 1; // 这个(以及下面若干行)就是所谓的“executable statement ”
……

方法二:设置keil

勾选C99 Mode

附c99特性:

在ANSI的标准确立后,C语言的规范在一段时间内没有大的变动,然而C++在自己的标准化创建过程中继续发展壮大。《标准修正案一》在1994年为C语言创建了一个新标准,但是只修正了一些C89标准中的细节和增加更多更广的国际字符集支持。不过,这个标准引出了1999年ISO 9899:1999的发表。它通常被称为C99。C99被ANSI于2000年3月采用。

在C99中包括的特性有:

增加了对编译器的限制,比如源程序每行要求至少支持到 4095 字节,变量名函数名的要求支持到 63 字节(extern 要求支持到 31)。增强了预处理功能。例如: 宏支持取可变参数 #define Macro(…) __VA_ARGS__使用宏的时候,允许省略参数,被省略的参数会被扩展成空串。支持 // 开头的单行注释(这个特性实际上在C89的很多编译器上已经被支持了)增加了新关键字?restrict, inline, _Complex, _Imaginary, _Bool 支持?long long, long double _Complex, float _Complex?等类型支持不定长的数组,即数组长度可以在运行时决定,比如利用变量作为数组长度。声明时使用?int a[var]?的形式。不过考虑到效率和实现,不定长数组不能用在全局,或?struct?与?union?里。变量声明不必放在语句块的开头,for 语句提倡写成?for(int i=0;i<100;++i)?的形式,即i?只在?for?语句块内部有效。允许采用(type_name){xx,xx,xx}?类似于 C++ 的构造函数的形式构造匿名的结构体。初始化结构的时候允许对特定的元素赋值,形式为: struct?test { int?a [ 3 ],b ; }?foo [ ]? =?? {? [ 0 ]. a? =? { 1 } ,? [ 1 ]. a? =? 2? } ; struct?test { int?a ,?b ,?c ,?d ; }?foo? =?? {?. a? =? 1 ,?. c? =? 3 ,? 4 ,?. b? =? 5 }?? // 3,4 是对 .c,.d 赋值的 格式化字符串中,利用?\u?支持 unicode 的字符。支持 16 进制的浮点数的描述。printf scanf 的格式化串增加了对?long long int?类型的支持。浮点数的内部数据描述支持了新标准,可以使用 #pragma 编译器指令指定。除了已有的?__line__ __file__?以外,增加了?__func__?得到当前的函数名。允许编译器化简非常数的表达式。修改了?/?%?处理负数时的定义,这样可以给出明确的结果,例如在C89中-22 / 7 = -3, -22?% 7 = -1,也可以-22 / 7= -4, -22?% 7 = 6。 而C99中明确为?-22 / 7 = -3, -22?% 7 = -1,只有一种结果。取消了函数返回类型默认为?int?的规定。允许?struct?定义的最后一个数组不指定其长度,写做 [](flexible array member)。const const int i?将被当作?const int i?处理。增加和修改了一些标准头文件,比如定义 bool 的 ,定义一些标准长度的 int 的 ,定义复数的 ,定义宽字符的 ,类似于泛型的数学函数 , 浮点数相关的 。 在 增加了 va_copy 用于复制 … 的参数。?里增加了 struct tmx ,对 struct tm 做了扩展。
输入输出对宽字符以及长整数等做了相应的支持。 24935359

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。