SORU
24 Aralık 2010, Cuma


typedef sabit uzunlukta dizi

24-bit veri türü tanımlamak için var.char[3] türünü temsil etmek için kullanıyorum. type24 char[3] typedef miyim? Kod örneği denedim. Başlık dosyamda typedef char[3] type24; koydum. Derleyici bu konuda şikayet etmedi. Ama C dosyasında bir fonksiyon void foo(type24 val) {} tanımlarken, şikayetçi oldu. type24_to_int32(char value[3]) yerine type24_to_int32(type24 val) gibi fonksiyonları tanımlamak mümkün olmak istiyorum.

CEVAP
24 Aralık 2010, Cuma


Typedef olurdu

typedef char type24[3];

Ancak, bu sonuç türü bir dizi türü vardır, ama kullanıcıların bir dizi türü olduğunu göremez çünkü muhtemelen çok kötü bir fikir. Eğer fonksiyon bir argüman olarak kullanılırsa, değeri tarafından referansla olacak, ve bunun için sizeof o zaman yanlış olur.

Daha iyi bir çözüm olurdu

typedef struct type24 { char x[3]; } type24;

Muhtemelen de ikinci uygulama tanımlı signedness beri char yerine unsigned char büyük bir problem olabilir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Wills

    David Wills

    31 Aralık 2007
  • MrOctopi

    MrOctopi

    6 Aralık 2010
  • TastyTuts | Creative video tutorials by Gareth David

    TastyTuts |

    6 Temmuz 2011