错误[P​​e028]:表达式必须具有常量值

时间:2016-08-22 09:28:28

标签: c struct compiler-errors typedef

编译代码时出现以下错误:

  

错误[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文件中使用这些变量(相同的副本)。

提前谢谢! 本

1 个答案:

答案 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};