Önemli Hata C1017
geçersiz tamsayı sabit ifadesi
Yönergesindeki #if
ifade mevcut değildi veya sabit olarak değerlendirilmedi.
kullanılarak #define
tanımlanan sabitler, bir , #elif
veya #else
yönergesinde #if
kullanılıyorsa bir tamsayı sabiti olarak değerlendirilen değerlere sahip olmalıdır.
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 #if
CONSTANT_NAME
false olarak değerlendirilir ve üzerinde YES
kullanılacak kod önişlemci tarafından kaldırılır. NO
de tanımsız (sıfır) olduğundan#elif
CONSTANT_NAME==NO
, ön işlemcinin kodu #elif
deyiminin bölümünde bırakmasına neden olarak true ()0 == 0
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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin