SORU
15 Mart 2012, PERŞEMBE


Ben C/C 0 boyutlu bir dizi tanımlamak ne olur ?

Sadece merak ettim, aslında ben sıfır uzunlukta bir dizi int array[0]; kod tanımlarsanız olur? GCC hiç şikayet etmiyor.

Örnek Program

#include <stdio.h>

int main() {
    int arr[0];
    return 0;
}

Açıklama

Aslında sıfır diziler bu şekilde başlatıldığını, Darhazer adlı değişken uzunluğu gibi sivri olmak yerine, optimize dışarı olup olmadığını anlamaya çalışıyorum.

Çünkü ben serbest bırakmak için bazı kod yaban ellere, o yüzden ben de onu merak ediyorum eğer ben idare durumlarda SIZE tanımlanan 0, ne olur ne olmaz bazı kod ile statik olarak tanımlanmış int array[SIZE];

Aslında GCC benim sorum neden hiç şikayet etmemişti, şaşırdım. Aldım, bir uyarı eksikliği eski kod desteklemek için büyük ölçüde bağlı olduğuna inanıyorum yeni güncellendi olmayan cevapları [] sözdizimi.

Çünkü ben esas merak etmiyor hata, ben etiketleme Lundin cevap olarak doğru (Navaz oldu ilk ama değildi tam olarak) -- Diğerleri olduğunu işaret onun gerçek kullanım için kuyruk yastıklı yapıları, iken, ilgili, değil mi tam olarak ne arıyordum.

CEVAP
15 Mart 2012, PERŞEMBE


Bir dizi olamaz sıfır boyutu var.

9899:2011 6.7.6.2 ISO:

Eğer bu ifade sabit bir ifade, bir değeri sıfırdan büyük olacaktır.

Yukarıdaki metin düz bir dizi (§1) ve VLA (§5) her ikisi için de geçerlidir. Bu C standart normatif metin. Bir derleyici farklı bir şekilde uygulamak için izin verilmez.

gcc -std=c99 -bilgiçlik taslayan bu bir uyarı verir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Apple

    Apple

    22 HAZİRAN 2005
  • optionalinfo

    optionalinfo

    29 EKİM 2005
  • Vsauce

    Vsauce

    30 Temmuz 2007