Irányelv feltételes fordítás
Számos irányelvek adnak arra, hogy szelektíven összeállítani a forráskód részeit a program. Ezt a folyamatot nevezzük feltételes fordítási és széles körben használják a cégek, akik élnek rovására kereskedelmi szoftver - akik a kínálat és támogat sok különleges változatait ugyanaz a program.
Irányelvek #if, #else, #elif és #endif
Talán a leggyakoribb feltételes fordítási direktívák #ha. #else. #elif és #endif. Ezek lehetővé teszik, attól függően, hogy a konstans értékét kifejezést vagy kizárhat bizonyos részein a kódot.
Általában a #ha irányelv az alábbiak szerint:
Ha mögött #ha állandó kifejezés igaz, a lefordított kód, amely között ezt a kifejezést, és #endif. Ellenkező esetben a köztes kódot kimarad. #endif #if direktíva jelzi az a mondat végén. Például,
Ez a program egy üzenetet jelenít meg a képernyőn, mert több, mint MAX 99. Ez a példa azt mutatja, valami nagyon fontos. Az a kifejezés értékét, amely túl van a #ha irányelvet. Meg kell értékelni fordításkor. Ezért csak a korábban megadott azonosítók és állandók lehet azonos feltételek mellett - de nem változók.
#else irányelv dolgozik főként mást - ez a kulcsszó a C: Meghatározza alternatívája az esetben, ha a feltétel nem teljesül #ha. Az előző példa lehet egészíteni a következők szerint:
Ebben az esetben úgy tűnik, hogy a MAX kevesebb, mint 99, így része a kódexéről #ha. Nem összeállítani. Azonban más összeállított kód, amely releváns a #else. és összeállította a program megjeleníti az üzenet összeállítani egy kis tömb.
Felhívjuk figyelmét, hogy a #else irányelv azonosítására használt és végén a #ha blokk. #else és az elején blokk. Ez természetes, hiszen minden #ha irányelv csak egyetlen #endif irányelvet.
Irányelv #elif azt jelenti, „else if” és a készletek a különböző összeállítási lehetőségek a lánc if-else-if. Miután #elif állandó kifejezés. Ha ez a kifejezés igaz, akkor úgy összeállítani neki egy kódrészletet, és nem ellenőrizte a többi kifejezést #elif. Ellenkező esetben a következő blokk van jelölve ez a sorozat. A #elif általános formája úgy néz ki, mint ez:
Például a következő részletben határozza meg a pénznem szimbólumát ACTIVE_COUNTRY érték (egyes országokban):
A szabvány szerint a S89 és #elif #ha irányelvek lehet 8 szint fészkel. Összhangban és a standard C99 programozók használhatják nem kevesebb, mint 63 fészkelő szinten. Amikor fészkelő minden egyes irányelv #endif. #else vagy #elif utal, hogy a legközelebbi irányelv #ha vagy #elif. Például az a helyes, a következő kódot:
#ifdef és #ifndef irányelvek
Egy másik módja a feltételes fordítási - az, hogy az irányelvek #ifdef és #ifndef. amelyek rendre képviselik „ha definiált” (ha meghatározott) és a „ha nem definiált” (hacsak speciálisan meghatározott). Általában a #ifdef a következő:
egy blokk kód lesz lefordítva, ha a makró nevét már korábban meghatározott #define nyilatkozatot.
Általában az üzemeltető #ifndef a következő:
egy blokk kód lesz lefordítva, ha a makró nevét még nem határozták meg a #define nyilatkozatot.
És #ifdef. és #ifndef, akkor az üzemeltető #else vagy #elif. Például,
hogy Szia, Ted. és Ralph nem definiált, beleértve Ralph nem volt szerencséje.