SORU
29 EKİM 2008, ÇARŞAMBA


C - kötü esnek dizi üyeleri?

Geçenlerde C esnek bir dizi üyeleri kullanarak kötü yazılım mühendisliği uygulama olduğunu okuyacaksınız. Ancak bu açıklama, hiçbir bağımsız değişken tarafından desteklenmedi. Bu kabul edilen bir gerçektir?

(Esnek dizi üyeleri C bir özellik belirtilmemiş büyüklükteki bir dizinin son elemanı ilan verebilirsiniz sayede c99'da tanıtıldı. Örneğin: )

struct header {
    size_t len;
    unsigned char data[];
};

CEVAP
29 EKİM 2008, ÇARŞAMBA


Bunu yapmamak için verirdim nedeni C99 kodunuzu sadece bu özelliği kullanmak için bağlamak için değmez.

Mesele her zaman aşağıdaki deyimi kullanabilirsiniz:

struct header {
  size_t len;
  unsigned char data[1];
};

Bu tamamen taşınabilir. Sonra dizi data n eleman için bellek ayrılırken hesaba 1 alabilir :

ptr = malloc(sizeof(struct header)   (n-1));

Zaten gereği olarak herhangi bir nedenle kodunuzu oluşturmak için C99 veya belirli bir hedef derleyici, bir zararı olacağını sanmıyorum.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elliot Davin

    Elliot Davin

    28 Kasım 2008
  • Skittles Page

    Skittles Pag

    28 Mart 2011
  • Thehalopianoplayer

    Thehalopiano

    4 ŞUBAT 2011