Merhaba arkadaşlar struct içindeki değişkenlerin karşısında ":" işareti var ne anlama geliyor ? ne için kullanılıyor ? ayrıca union içinde neden struct kullanmışlar?
union fsreg {
struct b {
unsigned int q0:1;
unsigned int q1:1;
unsigned int q2:1;
unsigned int q3:1;
unsigned int q4:1;
unsigned int q5:1;
unsigned int q6:1;
unsigned int q7:1;
} b;
unsigned int v;
} fsr;
Eğer yanlış bilmiyorsam bu tanımlama; bir
byte içerisindeki bitlerin tanımlanmasını sağlıyor.
qX değişkeninin bir bitlik alan kullandığını belirtiyor.
Büyük ihtimalle dediğiniz gibi ancak bu seferde değişkeni neden 1 bitlik olarak tanımlamamışlar sorusu aklıma geliyor.
bu arada örnek kod parçasını keil'in flash entegreler için yazdığı driverdan aldım.
Genel olarak veri hücre yapısı bir byte olarak
düşünülür. Buna göre derleyiciler de bit değişken
pek tanımlanmazlar.
Değişkenlerin en az byte olduğunu varsaydığımızda
böyle bir tanımlamaya ihtiyacımız olmaktadır.
unsigned char olarak da tanımlanabilir. Zira
unsigned int 16 bit alan kaplar. Ram alanından
tasarruf edilebilir.
Bit bazında çalışma yapmak için kullanılan bir yöntem.
:1 yerine :6 da diyebilirsin ilk altı bite bu şekilde ulaşmış olursun.
Her bir bite erişmek için yapılmış yani dimi ?
Evet. Enum olarak da tanımlanabilir. Ancak enum
tek bitler halinde işlem yapılabilir. Birden fazla bite
aynı anda erişmek/işlem yapmak için qX:bitSayisi
şeklinde kullanmak mümkün. q0:3 dersek;
q0 değişkeni 0b000 - 0b111 arasında değer alabilir...
Yoğurt/Yiğit ilişkisi...