2016-08-22 49 views
2

我收到以下错误而编译我的代码:错误[Pe028]:表达式必须具有恒定值

错误[Pe028]:表达式必须具有恒定值

我我已经阅读了一些关于这个问题的其他文章,但我无法解决这个问题。

我有两个类型定义一个头文件:

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引发提到的错误。

我知道通常我现在不需要头部解决方案,但后来我需要在另一个c文件中使用这些变量(相同的副本),只需实现该头部。

在此先感谢! ben

回答

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}; 
+0

感谢您的咨询!它正在工作:) –

+0

我不知道如何将问题标记为解决方案,但这一个是它对我来说 –

相关问题