编译环境:Keil uVision5。
语言:C语言
对于extern的应用,在下还是有点摸不着头脑啊,请各路英雄不吝指教。
在file1.c文件中的函数体外有这么一段变量声明和定义:
const uint32_t u32Value1 = 1;
const uint32_t u32Value2 =u32Value1;
因为u32Value1 预先被声明为常量,所以可以用u32Value1 对常量u32Value2 进行初始化,OK,编译没问题。
好,我们这样修改一下:
1、在file1.c文件中定义u32Value1 :
const uint32_t u32Value1 = 1;
2、然后在file2.c文件中有:
extern const uint32_t u32Value1 ;
const uint32_t u32Value2 =u32Value1;
在"const uint32_t u32Value2 =u32Value1; " 位置处编译器报错为"initializer element is not a complile-time constant",
即初始值为非常量,怎么会呢?我不是在file1.c文件中声明和定义u32Value1为常量了吗?
这个问题点先记录下来,暂时还找不到答案!