在Keil 51中,code修饰的变量放在ROM(Flash)中,而const修饰的变量为只读(不可修改),放在RAM中!可以用“code const”修饰变量,表示变量存储在ROM(Flash)中,且为只读,由此看来“code”与“code const”修饰变量有一样的功用。
在Keil MDK中,code修饰符无法使用,使用的话会报错。那么要怎么来修饰存放在ROM中的变量?此时是用到const,用const修饰的变量是存放在ROM(Flash)中的。事实上,const只是编译器的一个知我标志,说明该区域不能被改变。这不是绝对的,如const int a=10;如果出现a=11;的语句,编译器通不过(编译器只保证这一条语句通不过,cpu运行的时候根本不知道RAM中哪个区域的数据不可变,只是在编译时通过语句来把关),如果出现一指针指向&a,是可以改变a的值的。
总结,注意不同编译器对于const与code的规定。code一般用于51中,而const应用则非常广泛,注意其在不同的编译环境中表现的数据存储位置。