Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
érvénytelen egész szám állandó kifejezése
Megjegyzések
Az irányelvben szereplő #if kifejezés nem létezik vagy nem lett állandó.
#define használatával definiált állandóknak olyan értékekkel kell rendelkezniük, amelyek egész szám állandóként értékelhetők ki, ha egy #if, #elif, vagy #else irányelvben használják őket.
példa
Az alábbi példa c1017-et hoz létre:
// C1017.cpp
#define CONSTANT_NAME "YES"
#if CONSTANT_NAME // C1017
#endif
Lehetséges megoldás:
// C1017b.cpp
// compile with: /c
#define CONSTANT_NAME 1
#if CONSTANT_NAME
#endif
Mivel CONSTANT_NAME a kiértékelés sztringre és nem egész számra történik, az #if irányelv végzetes C1017-hibát okoz.
Más esetekben az előfeldolgozó nullaként értékeli ki a nem definiált állandót. Ez nem kívánt eredményeket okozhat, ahogy az alábbi példában is látható.
YES nincs definiálva, ezért nullára értékel. A kifejezés #ifCONSTANT_NAME kiértékelése hamis, és az előfeldolgozó eltávolítja a használni YES kívánt kódot.
NO szintén nincs definiálva (nulla), így #elifCONSTANT_NAME==NO igazra értékeli ki (0 == 0), ami miatt az előfeldolgozó a kódot a #elif részben hagyja az utasításban — pontosan az ellenkezője a várt viselkedésnek.
// 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
Annak megtekintéséhez, hogy a fordító pontosan hogyan kezeli az előfeldolgozási irányelveket, használja a /P, /E vagy /EP parancsot.