Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
geçersiz tamsayı sabit ifadesi
Açıklamalar
Yönergesindeki #if ifade mevcut değildi veya sabit olarak değerlendirilmedi.
kullanılarak #define tanımlanan sabitler, bir , #ifveya #elif yönergesinde #elsekullanılıyorsa bir tamsayı sabiti olarak değerlendirilen değerlere sahip olmalıdır.
Örnek
Aşağıdaki örnek C1017 oluşturur:
// C1017.cpp
#define CONSTANT_NAME "YES"
#if CONSTANT_NAME // C1017
#endif
Olası çözüm:
// C1017b.cpp
// compile with: /c
#define CONSTANT_NAME 1
#if CONSTANT_NAME
#endif
Tamsayı CONSTANT_NAME değil dize olarak değerlendirildiği #if için yönergesi önemli hata C1017 oluşturur.
Diğer durumlarda, önişlemci tanımlanmamış bir sabiti sıfır olarak değerlendirir. Bu, aşağıdaki örnekte gösterildiği gibi istenmeyen sonuçlara neden olabilir.
YES tanımlanmamış olduğundan sıfır olarak değerlendirilir. İfade #ifCONSTANT_NAME false olarak değerlendirilir ve üzerinde YES kullanılacak kod önişlemci tarafından kaldırılır.
NOde tanımsız (sıfır) olduğundan #elifCONSTANT_NAME==NO, ön işlemcinin kodu 0 == 0 deyiminin bölümünde bırakmasına neden olarak true ()#elif olarak değerlendirilir ve hedeflenen davranışın tam tersidir.
// C1017c.cpp
// compile with: /c
#define CONSTANT_NAME YES
#if CONSTANT_NAME
// Code to use on YES...
#elif CONSTANT_NAME==NO
// Code to use on NO...
#endif
Derleyicinin ön işlemci yönergelerini tam olarak nasıl işlediğini görmek için /P, /E veya /EP kullanın.