struct içindeki değişken

Başlatan WrtM, 17 Nisan 2015, 20:54:38

WrtM

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;

 

mehmet

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.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

WrtM

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.

mehmet

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.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

XX_CİHAN_XX

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.
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.

baran123

Her bir bite erişmek için yapılmış yani dimi ?

mehmet

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...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"