编译代码时出现以下错误:
错误[Pe028]:表达式必须具有常量值
我已经在stackoverflow中阅读了一些关于该问题的文章,但我无法解决这个问题。
我有一个包含两个typedef的头文件:
typedef struct{
int32_t a;
int32_t b;
int32_t c;
}mydefone;
#ifndef _my_def_one
#define _my_def_one
extern mydefone MyDefOne;
#endif
typedef struct{
int32_t header;
mydefone definition;
}mydeftwo;
#ifndef _my_def_two
#define _my_def_two
extern mydeftwo MyDefTwo;
#endif
现在我正在尝试在我的.c文件中使用这两个外部定义,并将它们彼此链接:
mydefone MyDefOne = {1,2,3};
mydeftwo MyDefTwo = {567,MyDefOne};
我的编译器会为我的MyDefTwo抛出上述错误。
我知道通常我现在不需要此示例中的Header解决方案但后来我需要通过实现该Header在另一个c文件中使用这些变量(相同的副本)。
提前谢谢! 本答案 0 :(得分:0)
MyDefOne
不是有效的初始值设定项。你应该使用下一个:
mydefone MyDefOne = {1,2,3};
mydeftwo MyDefTwo = {567,{1,2,3}};
或利用宏来保证两个初始化都使用相同的值:
#define MY_INITIALIZER {1,2,3}
mydefone MyDefOne = MY_INITIALIZER;
mydeftwo MyDefTwo = {567, MY_INITIALIZER};