2017-08-03 16 views
0

内部に配列を持つ構造体を作成しようとしています。配列のサイズは、コンパイル時に設定する必要があります。それはハードコードされていますが、変数を使用するので、コード内で簡単に変更できます。問題は、struct定義の前にヘッダでconst intを使用するとリンカエラーが発生しています。ここに私のコードは次のとおりです。ヘッダファイルから構造体にconst int項目を含む配列を宣言する方法

const int t_Module_qInternalParams =64; 

typedef struct Module{ 
    double internalParams[t_Module_qInternalParams]; 
} t_Module; 
+2

「#define」を使用してみませんか? –

+0

@FelixPalmenはまだスタックオーバーフローのハングを取得しています – matt

+0

'それはハードコードされていますが、変数を使用するので、コード内で簡単に変更できます。 「...それは何ですか? –

答えて

2

この:

const int t_Module_qInternalParams = 64; 

オブジェクトは、初期化後に変更することはできませんという意味で定数ですが、それはだがそれでも変数。特に、t_Module_qInternalParamsは、宣言者の必要に応じて、ではなく、コンパイル時定数です。

簡単な解決策ではなく、プリプロセッサマクロを使用することです:

#define MODULE_INTERNALPARAMS 64 

これはちょうど64前にコンパイルフェーズが開始に展開、そしてもちろん、64コンパイル時定数です。

+0

ありがとうございます。私はまだ始まっている! – matt

関連する問題