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

  • Julian Smith

    Julian Smith

    31 EKİM 2006
  • Rooster Teeth

    Rooster Teet

    11 Temmuz 2006
  • Tips On Linux

    Tips On Linu

    26 Temmuz 2008