SORU
29 EYLÜL 2009, Salı


C/C : Bit Düzeni ve Uyumu Saha Gücü

Bir yapı içinde bit alanların sırasını belirli bir platform olduğunu okumuştum. Eğer farklı bir derleyici-özel paketleme seçenekleri kullanırsam ne olacak, bu veri yazıldığı için doğru sırayla saklanır garanti edecek? Örneğin:

struct Message
{
  unsigned int version : 3;
  unsigned int type : 1;
  unsigned int id : 5;
  unsigned int data : 6;
} __attribute__ ((__packed__));

GCC derleyici ile bir Intel işlemci, alanların gösterildiği gibi bellekte koydu. Mesaj.sürüm tampon ve Mesajı ilk 3 bit.yazın ardından. Eğer çeşitli Derleyiciler için eşdeğer yapı ambalaj seçenekleri bulursam, bu çapraz platform olacak?

CEVAP
29 EYLÜL 2009, Salı


Hayır, tam taşınabilir olmayacaktır. Yapılar için ambalaj seçenekleri uzantıları olan ve kendilerini tam olarak taşınabilir. Ek olarak, C99 §6.7.2.1, paragraf 10 diyor ki: "emri ayırma bit alanları içinde bir birim (yüksek sipariş alt sıra veya alt sıra yüksek-sipariş) uygulama tanımlı."

Hatta tek bir derleyici örneğin farklı hedef platformun endianness bağlı olarak biraz dışında sahada yatıyordu.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hydejiaqi

    hydejiaqi

    12 Mart 2008
  • Jason Parker

    Jason Parker

    14 Aralık 2009
  • Ludique

    Ludique

    21 NİSAN 2009