首先大家思考一个问题,c语言某个源文件中的环境,也就是说哪些前提已知的情况。
(1)在c语言中如何表示一个常量,大家都能想到使用的是宏定义#define。当然了宏定义#define的用法还有其他的,例如寄存器地址,寄存值所表示的类似内存的空间中。
(2)那么如何表示一组常量呢,也就是说多个常量,并且这些常量天然的是被绑定在一起的,答案是使用enum定义一个枚举类型,并将这一组常量包含在一对{}中,并用"="对这些常量进行赋值。
(3)大家再思考一个问题,除了上述2种情况,还有一种情况就是需要用到一段字符串、一段具体的数字、一个"表格"这种情况,最常见的情况例如表示一款设备或芯片的型号"s5pv210",一款芯片的生产日期"20251025",一个时间点"09:12:30"等等。显示中这种情况是存在的,那如何用c语言表示出来呢?大家能想到的是使用一个数组,例如u8 str[] = {'s', '5', 'p', 'v', '2', '1', '0'};这样很好,但是存在一种问题就是这个数组是存在全局变量中的,如果是单片机这种内存有限的环境,如果定义一个特别大的"表格"例如一些算法需要用的查表法就是定义了一个很大的表格。总之很容易受限。这个时候就需要用到关键字"const",它修饰的变量是一个常量,const u8 str[] = {'s', '5', 'p', 'v', '2', '1', '0'};而且const修饰的常量,如何在后面编写代码的时候被不小心写另外一个数值的时候,编译器会报错。