2017-11-09 21 views
0
struct customFunction { 
    int id; 
    int numOfSubfunctions; 
    int subfunctions[]; 
}; 

const customFunction supportedFunctions[] = { 
    { 
     0x01, 
     1, 
     { 
      0x01 
     } 
    }, 
    { 
     0x02, 
     2, 
     { 
      0x01, 
      0x02 
     } 
    } 
    ... 
}; 

supportedFunctions配列は、特定の機能は、など現在別の構造体arrya内の構造体内のint配列を初期化するには?

が、私はこのエラーが現れている、将来的にサポートし、使用するために機能するかを識別するために使用されているかどうかをチェックするために使用されます。

あまりにも多くの初期化子 'INT [0]'

を指しています

いずれの関数についても、サブ関数の数は0 - nである場合があります。

答えて

0

これは決してうまくいかないでしょう。複数のcustomFunction要素が同じ配列にありますsubfunctions[]メンバーの異なるサイズのはありません。配列要素は同じサイズでなければなりません。

customFunction要素は、異なるサイズのsubfunctions[]配列を持っている必要がある場合は、例えば、他の場所でメモリ内の実際の配列を格納し、それらを指すようになります:

struct customFunction { 
    int id; 
    int numOfSubfunctions; 
    const int *subfunctions; 
}; 

const int subfunctions_1[] = { 
    0x01 
}; 

const int subfunctions_2[] = { 
    0x01, 
    0x02 
}; 

const customFunction supportedFunctions[] = { 
    { 
     0x01, 
     1, 
     subfunctions_1 
    }, 
    { 
     0x02, 
     2, 
     subfunctions_2 
    } 
    ... 
}; 
+0

そして優しいこのキャッシュのですか? – Amadeus

+0

それは問題ですか? OPが求めていることをするのは唯一の選択肢です。 –

+0

ありがとうございました! –