2016-08-22 94 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

我不知道如何將問題標記爲解決方案,但這一個是它對我來說 –

相關問題