请问傻孩子:我按照书中的例子实验,为什么调换2个定义语句的位置,编译器就会报错呢?
照着书中跑马灯的程序来编写,把unsigned char Counter=0;放在引脚定义之前,iccavr编译完全没有问题,但是一旦我先定义引脚输入输出,再来定义unsigned char Counter=0;编译的时候就报错,这是什么原因呢?谢谢错误信息:
E:\iccv7avr\bin\imakew -f DISPLAY.mak
iccavr -c -e -D__ICC_VERSION="7.19" -D_EE_EXTIO -DATMega88-l -g -MHasMul -MEnhanced -Wa-W..\..\..\AVRDRA~1\project\3\main.c
!E C:\Downloads\AVRDRA~1\project\3\main.c(25): illegal statement termination
!E C:\Downloads\AVRDRA~1\project\3\main.c(25): skipping `unsigned' `char'
!E C:\Downloads\AVRDRA~1\project\3\main.c(25): undeclared identifier `Counter' 是不是編譯器的本身的問題呢,
本身作了限制,
在KEIL里也有類似的問題的 这不是编译器的问题,而是ANSI-C语法的限制。
在定义变量之前,不允许有任何其他执行语句。比如,在一个花括号内:
{
unsigned char Counter = 0;
DDRB = 0xFF;
}
就是正确的,但是
{
DDRB = 0xFF;
unsigned char Counter = 0;
}
就是错误的。C++则无此限制。 谢谢! 学习了 呵呵,我很早也发现这样的现象了,定义变量的语句必须在函数的最前面,不然编译不通过! <<深入浅出>>附录G有讲 都很有用 可以看一看
页:
[1]