私はこの異常な配列の初期化を持っている一部のレガシーCコードに取り組んでいます:C - 異常な配列の初期化
uint32_t defsMB40000[REG40000_SIZE] =
{
#include "modbusDefs40000.h"
};
ヘッダファイルには、コンマのリスト番号とコメントを分けています。私は以前この構造を見たことがないが、正しく動作するように思える。ヘッダー内の持っている方が良いではないでしょう:
uint32_t defsMB40000[REG40000_SIZE] =
{
0,
0xFF,
...
};
と.cファイルで、その後
#include "modbusDefs40000.h"
?
私は、ヘッダファイルがpythonスクリプトによって作成されていることさえ理由があると考えます。私はこのイディオムについてのあなたのコメントに感謝し、もしあなたがそれのようなものを見たならば。
おかげで、
JH
それとも、このシーケンスは別の部分で使用されているため。とにかく、IMHOこれは悪いスタイルです。 –
誰も良い方法ではありません。通常、ヘッダはオブジェクト定義を持たず、宣言のみを持つべきではありません。そのような '.inc'のように異なる拡張子が使われることもありますが、データオブジェクトを別の単位でコンパイルし、使用する場合はいつでも外部宣言を使用するのが最善の方法です。 'static' storge指定子を使わなければならない限り、その効果は同じになります。 – Olaf
これは、イニシャライザが外部生成されている状況(これは明らかにあなたの例のように)において、これを行うための完璧な方法です。 – AnT