2016-04-07 29 views
0

Mikrodenetleyicideki sabit değişkenlerin ömrü nedir? Çalışma zamanı veya Çalışma Zamanı sırasında atanan const değişkenleri mi?ömür boyu sabit değişken?

void main() 
{ 
    const x=5; 
    while(1) 
    { } 

} 
+0

derleyici ve derleyici bayraklarına bağlı olabilir. Örnek kodunuz ölü koddur, dolayısıyla hiçbir şey yapmadığından (optimizasyonları kullanırsanız) hiçbir sabit tahsis edilmeyecektir. Sabit bir cevap yoktur, çünkü bu tür bir şeyi dikte ettirmez, ne de yapmalıdır. En sevdiğiniz seçeneklerle özel derleyicinizle özel hedefiniz için –

+0

, ne olduğunu görmek için derleyin ve sonra derleyin. tek cevap budur. –

cevap

1

Derleyiciye göre değişir.

Genellikle sabitler program belleğine yerleştirilir. Derleme yapıldıktan sonra sabitler HEX dosyasında yerleşiktir. Örneğin, Microchip C18 ve XC32 derleyicileri farklı kullanım özelliklerine sahiptir. C18'in C32 ile ROM'u var iken, ROM sabitlerinin nasıl yerleştirileceğini belirlemek için -membedded-data işaretini kullanmalısınız.

+0

Demek istediğim kodun hedefe yakılmasından sonra .. son dosyanın (.elf) getirilmesinden sonra derleyicinin rolü sona erdi. –

+1

Konstrasyonlar her zaman ROM'da saklanır (program belleği). Hangi HEX dosyanıza gömülü demektir (onları arayabilirsiniz). Bellek alanı tahsisi, derleme/bağlama işlemi sırasında muhtemelen sorunuzun cevabını verir. Demek istediğim, bazı durumlarda, platforma bağlı olarak, sabitler için tam ROM alanını ayarlamak için bir derleyiciyi "değiştirebilir". Örneğin, C18 derleyicisi, bildirdiğiniz herhangi bir sabit için '' '' '' ya da '' '' '' '' '' gibi '' '' '' '' '' '' '' '', '' '' '' 'gibi' '' '' '' '' '' ',' '' '' ',' '' '' ',' '' '' ',' '' '', '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' nı belirtir. Bu sayede program belleğinin daha iyi düzenlenmesini sağlayabilir ve sık kullanılan sabitleri örneğin yakın segmentte saklayabilirsiniz. –

İlgili konular