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

  • Dive In

    Dive In

    17 Temmuz 2013
  • hans peder sahl

    hans peder s

    22 Temmuz 2009
  • J Medema

    J Medema

    11 EKİM 2006