Friday, November 18, 2011

Platformfüggetlen (ANSI) c: clear vagy cls?

Egyszerűbb c program írásakor / tervezésekor felmerülhet, hogy platformfüggetlen programot szeretnénk írni, viszont az alapvető parancssoros megjelenéshez szükség lenne egy olyan képernyőtörlési függvényre, amely Linux és Windows rendszerek alatt is tökéletesen fut.

Mindkét rendszeren a system() függvény végzi a képernyő törlést, viszont más-más paramétert várnak, ezért ha egyszerűség miatt mindenképpen őt szeretnénk használni (és nem egy bonyolultabb grafikus könyvtárat), akkor a következőket kell tennünk:

Makró segítségével meg kell vizsgálni, hogy Linuxon vagy Windowson fordítjuk a kódot, ezt a következőképpen lehet megtenni:


 #ifdef linux  
 void cls()  
 {  
      /* Hasznaljon clear-t ha Linuxon fordul*/  
      system("clear");  
      return;  
 }  
 #endif  
 #ifdef _WIN32  
 void cls()  
 {  
      /* Hasznaljon cls-t ha Windowson (VisualStudio) fordul */  
      system("cls");  
      return;  
 }  
 #endif   

Ezután a programunkban a képernyő törlésére használjuk a cls() függvényt, melynek segítségével platformfüggetlenek maradhatunk.

A #ifdef utáni rész (linux, _WIN32) fordítónként eltérhet, ezért mindenképpen utánna kell nézni, hogy a használt fordító milyen makrót definiál.

No comments:

Post a Comment