Değişken çakışması

Başlatan XX_CİHAN_XX, 24 Temmuz 2009, 18:15:30

XX_CİHAN_XX

volatile unsigned char Reg1 @ 0x20;


unsigned char Reg2;


unsigned char Reg3[20];

Buradaki değişken tanımlamalarının 0x20 de (Reg1 ile) çakışma ihtimali varmıdır, yoksa derleyici bunu göz önünde bulundurur mu ?
Bulundurmazsa bizim böyle bir adres çakışmasını önlemek için ne yapmamız gerekir ?
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

elt42at

Bana sanki reg1 ve reg2 aynı adresi belirten iki farklı isim olarak kullanılabilirmiş gibi geliyor. Belki! Ama türleri farklı olur ise orada bi uyarı yapabilir.

XX_CİHAN_XX

Aslında benim aynı adrese farklı isimlerle erişebilmek gibi bir niyetim yok bunun çok daha güzel alternatifleri C dilinde mevcut. Benim merak ettiğim esas konu,
volatile unsigned char Reg1 @ 0x20;

bu şekilde 0x20 inci adrese bir tanımlama yaptığımda, türleri ne olursa olsun programdaki normal şekilde yapılan diğer tanımlamalardan herhangi birininde 0x20 inci adrese denk düşmesi mümkünmüdür.
Mesela CCS C de yanlış hatırlamıyorsam bu gibi durumları önlemek için
#reserve direktifi vardı. HiTech C de böyle birşey göremedim. Bunu kendisi otomatik denetliyormudur acaba bunu merak ettim.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

arslan74

Merhaba,

MPLAP'da derleyince, değişkenin üzerine gelinde ait olduğu adresi gösteriyor. Bu şekilde çakışma var mi diye kontrol edebilirsin.

Selamlar