次のプログラムの6行目(my_fooをfoo_initに初期化)でエラーが発生しましたが、その理由がわかりません。
typedef struct foo_t {
int a, b, c;
} foo_t;
const foo_t foo_init = { 1, 2, 3 };
foo_t my_foo = foo_init;
int main()
{
return 0;
}
これは、私が取り組んでいる大規模なマルチファイルプロジェクトの簡易バージョンです。目標は、オブジェクトファイルに単一の定数を含めることで、複数のファイルが状態構造を初期化するために使用できます。それは限られたリソースを備えた組み込みターゲットであり、構造体はそれほど小さくないので、ソースの複数のコピーは必要ありません。私は使用したくない:
#define foo_init { 1, 2, 3 }
また、移植可能なコードを記述しようとしているので、有効なC89またはC99のソリューションが必要です。
これはオブジェクトファイル内のORGに関係していますか?その初期化された変数は1つのORGに入り、2番目のORGの内容をコピーすることによって初期化されますか?
多分私は私の戦術を変更する必要があり、起動時にすべてのコピーを実行する初期化関数を持っている必要があります。そこに他のアイデアがない限り?