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

  • Bryan Smith

    Bryan Smith

    12 Mart 2006
  • Google Россия

    Google Ро

    9 Temmuz 2007
  • wwjoshdu

    wwjoshdu

    18 ŞUBAT 2011