Aşağıdaki programın 6. satırında bir hata alıyorum (my_foo için foo_init için başlat) ve nedenini anladığımdan emin değilim.
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;
}
Bunun üzerinde çalıştığım daha büyük, çok dosyalı bir projenin basitleştirilmiş bir sürümü olduğunu unutmayın. Amaç, nesne dosyasında bir durum yapısını başlatmak için birden fazla dosyanın kullanabileceği tek bir sabitin bulunmasıydı. Sınırlı kaynaklara sahip yerleşik bir hedef olduğundan ve yapı o kadar küçük olmadığından, kaynağın birden fazla kopyasını istemiyorum. Kullanmamayı tercih ederim:
#define foo_init { 1, 2, 3 }
Ayrıca taşınabilir kod yazmaya çalışıyorum, bu yüzden geçerli C89 veya C99 bir çözüme ihtiyacım var.
Bunun bir nesne dosyasındaki ORG'lerle bir ilgisi var mı? Başlatılan değişkenler bir ORG'ye girer ve ikinci bir ORG'nin içeriği kopyalanarak başlatılır mı?
Belki sadece taktiğimi değiştirmem ve başlangıçta tüm kopyaları yapması için bir başlatma işlevine sahip olmam gerekir. Başka fikirler olmadığı sürece?