SORU
22 ŞUBAT 2010, PAZARTESİ


Tanımlar üzerinde sabitler tercih edeyim?

C, tanımlar üzerinde sabitler tercih eder? Son zamanlarda çok fazla kod okuma oldum, ve örnekler tüm tanımlar ağır faydalanmak.

CEVAP
22 ŞUBAT 2010, PAZARTESİ


Hayır, genel olarak C sabit nitelenmiş nesne adları sabitler oluşturmak için kullanmamalısınız. Bir oluşturmak içinsürekli olarak adlandırılmışC makrolar (#define) veya çeteleler kullanmalısınız. Aslında C dili hiçbir sabitler, ima etmek gibi görünüyor bir anlamda. (C) bu konuda C önemli ölçüde farklıdır)

C dilinde kavramlarsüreklivesürekli ifadeçok farklı C tanımlı . Csüreklidemektiredebi değer, 123 gibi. İşte bazı örneklersabitlerC

123
34.58
'x'

C sabitler oluşturmak için kullanılabilirsabit ifade. Ancak, sabit nitelikli olduğundan, herhangi bir türde bir nesne değildirsabitlerC, sabit ifadelerde kullanılamaz, ve, sonuç olarak, sürekli verilen ifadeler gerekli olduğu edemiyor inş nitelikli nesneleri kullanın.

Örneğin, aşağıdaki sabit değildir

const int C = 123; /* C is not a constant!!! */

ve C yukarıdaki sabit olduğu, dosya kapsamında bir dizi türünü bildirmek için kullanılamaz

typedef int TArray[C]; /* ERROR: constant expression required */

Dava bir etiket olarak kullanılamaz

switch (i) {
  case C: ; /* ERROR: constant expression required */
}

Bit alanı genişliği olarak kullanılamaz

struct S {
  int f : C; /* ERROR: constant expression required */
};

Statik depolama süresi ile bir nesne için bir başlatıcı olarak kullanılamaz

static int i = C; /* ERROR: constant expression required */

Numaralama başlatıcı olarak kullanılamaz

enum {
  E = C /* ERROR: constant expression required */
};

ben.e bir yerde herhangi bir yerde kullanılamazsürekligereklidir.

Bu karşı sezgisel görünebilir, ama bu dili nasıl tanımlandığını.

Bu çalıştığınız kodu #define-s Bu birçok nedeni budur. Yine C dilinde sabit nitelikli nesne çok sınırlı bir kullanımı var. Temelde tamamen işe yaramaz olduklarını "C dilinde temel olarak #define kullanmak zorunda kalıyor ya da gerçek sabitler bildirmek için çeteleler ediliyor.", sabitleri

Elbette, durumlar ne zaman bir sabit nitelikli nesne yarıyor mu, yani ne istiyorsan onu yap, bunu gerçekten üstün makrolar birçok yönden, bu kapsamlı ve yazdınız. Muhtemelen geçerli, ancak genel durumda yukarıdaki sınırlamalar dikkate almak gerekir nerede bu tür nesneleri tercih etmelisiniz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kevin Bruckert

    Kevin Brucke

    30 Aralık 2006
  • Krumme1996

    Krumme1996

    21 EYLÜL 2009
  • Māris Zaharovs

    Māris Zahar

    28 Mayıs 2008