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
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.
Neden karma tablo üzerinde Sözlük terc...
Neden Vim uzmanlar sekmeler üzerinde t...
Nedenleri üzerinde Perl readdir (ya da...
Neden/ne zaman Oktav üzerinde MATLAB t...
Nasıl sayfa yük üzerinde form giriş me...