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
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.
Neden&; dizi yineleme için... "* o kad...
Nasıl ve indeksle Dizi Dizi Öğe Kaldır...
Nasıl Dizi Raylar KİMLİĞİ istisnasız A...
İlişkili tanımsız davranışı dışında ge...
C tamsayılar dizisi ile dizi oluşturma...