SORU
7 AĞUSTOS 2010, CUMARTESİ


Fonksiyon dizi parametre statik anahtar kelime amacı

Bazı kaynak kodu tarama sırasında böyle bir fonksiyon buldum

void someFunction(char someArray[static 100])
{
    // do something cool here
}

Göründüğü bazı deneyler ile diğer elemelerinde de görünebilir:

void someFunction(char someArray[const])
{
    // do something cool here
}

Elemeleri tek dizi bir fonksiyonu parametre olarak bildirildi[ ] içeride izin var gibi görünüyor. Bunlar ne işe yarar? Neden işlev parametreleri için farklı mı?

CEVAP
7 AĞUSTOS 2010, CUMARTESİ


İlk bildirimi someArray olduğunu derleyici bildiriren azından100 Elemanları uzun. Bu iyileştirmeler için kullanılabilir. Örneğin aynı zamanda someArray asla BOŞ olduğu anlamına gelir.

İkinci bildirim sadece someArray (someArray değil elemanları!) declars yani olarak sabit someArray=someOtherArray yazabilirsiniz

Gerçekten tek fonksiyonu parametre için mantıklı çünkü işlev parametreleri için farklı. Eğer bir dizi bildirirseniz, o zaman aslında ne kadar çok kişi var derleyici söyledin. Ve bir dizi değişkeni tanımlanmamış boyutu (int x[]), bir farklı anlamı daha bir dizi parametre (değişken olmalı başlatıldı ve verimleri bir boyutu() saf boyut)

GÜNCELLEME:Bu tanımlar c99'da yan bulmak için kayıp sayılırım. Diyor ki: hangi bir madde 6.7.5.3-21 var

[...]
void f(double a[restrict static 3][5]);
(Note that the last declaration also specifies that the argument corresponding to a in any call to f must be a non-null pointer to the first of at least three arrays of 5 doubles, which the others do not.)

ve işte bu kadar. Kimse yok C99-fu ile mi?

Görünüşe göre Evet, teşekkür ederim @Gilles (açıklama):

N1124 ve N1256, tanımlama 6.7.5.3-7. madde: "anahtar kelime Varsa statik de [ ve ]içinde görünür dizi türü türetme, o zaman için her fonksiyonu için değeri Ara değişken olan ilk erişim sağlayacaktır en azından bir dizi öğesi boyutu belirtildiği gibi birçok unsur ifade."

GÜNCELLEME: http://www-01.ibm.com/support/knowledgecenter/SSLTBW_1.12.0/com.ibm.zos.r12.cbclx01/param_decl.htm#param_decl__static_array_index

Açıkça" boş olmayan bir dizi parametreleri. belirtmek için "statik önerir

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • finalcall07

    finalcall07

    11 NİSAN 2008
  • metagamers

    metagamers

    13 Mayıs 2006
  • MobileTechReview

    MobileTechRe

    6 HAZİRAN 2008