2016-08-22 3 views
2

を持っている必要があります私はすでにstackoverflowでその問題についてのいくつかの他の記事を読んだが、私はその動作を解決することはできません。エラー[Pe028]:</p> <blockquote> <p>エラー[Pe028]:式が、私は「一定の値</p> </blockquote> <p>を持っている必要があります式は、私のコードをコンパイルしながら、私は次のエラーを取得しています一定の値

は、私は2つのtypedefを持つヘッダファイルを持っている:

mydefone MyDefOne = {1,2,3}; 
mydeftwo MyDefTwo = {567,MyDefOne}; 
:私は私の.cファイルでこれらの2つの外部定義を使用して、このように相互にリンクしようとしています今

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 

と私のコンパイラが私のMyDefTwoに上記のエラーを投げます。

この例ではヘッダーソリューションが必要ですが、後でそのヘッダーを実装するだけで、別のcファイルでこれらの変数(同じコピー)を使用する必要があります。

ありがとうございます! ベン

答えて

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

私は解決策として質問をマークする方法はまだわかりませんが、これは私のためです –

関連する問題

 関連する問題