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

  • cekehechu

    cekehechu

    20 HAZİRAN 2006
  • graham025

    graham025

    25 NİSAN 2006
  • Thom Hall

    Thom Hall

    24 Kasım 2006