C - kötü esnek dizi üyeleri? | Netgez.com
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

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • isupportthegosselins

    isupporttheg

    6 Aralık 2009
  • Joseph Hayhoe

    Joseph Hayho

    20 Mayıs 2010