Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
ekspresi konstanta bilangan bulat tidak valid
Komentar
Ekspresi dalam direktif #if tidak ada atau tidak mengevaluasi ke konstanta.
Konstanta yang ditentukan menggunakan #define harus memiliki nilai yang mengevaluasi ke konstanta bilangan bulat jika digunakan dalam #ifdirektif , #elif, atau #else .
Contoh
Contoh berikut menghasilkan C1017:
// C1017.cpp
#define CONSTANT_NAME "YES"
#if CONSTANT_NAME // C1017
#endif
Kemungkinan resolusi:
// C1017b.cpp
// compile with: /c
#define CONSTANT_NAME 1
#if CONSTANT_NAME
#endif
Karena CONSTANT_NAME mengevaluasi ke string dan bukan bilangan bulat, #if direktif menghasilkan kesalahan fatal C1017.
Dalam kasus lain, pra-prosesor mengevaluasi konstanta yang tidak terdefinisi sebagai nol. Ini dapat menyebabkan hasil yang tidak diinginkan, seperti yang ditunjukkan dalam contoh berikut.
YES tidak terdefinisi, sehingga mengevaluasi ke nol. Ekspresi #ifCONSTANT_NAME mengevaluasi ke false dan kode yang akan digunakan YES dihapus oleh prapemrossor.
NO juga tidak terdefinisi (nol), jadi #elifCONSTANT_NAME==NO mengevaluasi ke true (0 == 0), menyebabkan prapemrosedur meninggalkan kode dalam #elif bagian pernyataan — persis kebalikan dari perilaku yang dimaksudkan.
// 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
Untuk melihat dengan tepat bagaimana pengkompilasi menangani arahan praproscessor, gunakan /P, /E, atau /EP.