SORU
11 Ocak 2010, PAZARTESİ


Uçucu Yapı Anlambilim

Yapı-yazılı bir değişken olarak uçucu eğer kendi alanları içe dönük kodu erişim () örneğini bildirmek için yeterli mi, ya da bir yapının belirli alanlar geçici olarak bildirmeniz gerekir?

Farklı şekilde ifade edilmiş, ne anlam farkları (varsa) arasında

typdef struct {
  uint8_t bar;
} foo_t;

volatile foo_t foo_inst;

ve

typedef struct{
  volatile uint8_t bar;
} foo_t;

foo_t foo_inst;

Hatırlıyorum da belirten bir işaretçi yazılan değişken olarak değişken (örneğin değişken uint8_t * foo) sadece bilgilendirir derleyici adresi sivri tarafından foo değişebilir, yaparken hakkında açıklama yok değerleri işaret ederek foo. Bir benzetme yapı yazılan değişkenleri için de geçerli olup olmadığını anlayamıyorum.

CEVAP
11 Ocak 2010, PAZARTESİ


Sizin örnekte, bu ikisi aynı kapıya çıkar. Ama sorunlar işaretçiler etrafında döner.

Öncelikle derleyici belleğe işaret ediliyor anlatıyor uçucudur. Eğer geçici olarak bir işaretçi kendisi işaretlemek istiyorsanız, uint8_t * volatile foo; yapmak gerekir

Ve bu uçucu vs gibi yapı işaretleme arasındaki temel farklar nereden bireysel alanları kutluyor. Eğer varsa:

typedef struct
{
    uint8_t *field;
} foo;

volatile foo f;

Böyle hareket eder:

typedef struct
{
    uint8_t * volatile field;
} foo;

ve gibi değil:

typedef struct
{
    volatile uint8_t *field;
} foo;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • amc

    amc

    21 EYLÜL 2005
  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • julioissk84life

    julioissk84l

    18 ŞUBAT 2008