PDA

Visualizza la versione completa : [c++]Pulire la console


c_junior
11-02-2010, 17:14
buon giorno a tutti, quando sono sotto windows per pulire la console uso system("cls"); mentre su linux se non sbaglio si dovrebbe usare system("clear"), giusto?
se è cosi ho questo problema: devo consegnare esercizio completamente cross platform però per l'estetica dell'esercizio stesso vorrei inserire qualche system cls o clear cosi almeno si capisce un po di più. Il problema è che se uso system() il programma non avrà il risultato sperato. Esiste una funzione che pulisce la console indipendentemente dal so?

grazie

oregon
11-02-2010, 17:20
Puoi inserire una

#ifdef _WINDOWS

per la compilazione condizionale

c_junior
11-02-2010, 17:25
ma io vorrei creare una funzione generale che mi effettui la pulizia della console:

va bene se faccio cosi:


void clear(){
#ifdef _WINDOWS
system("cls");
#else
system("clear");
#endif
}



--------
edit quella di sopra non funziona questa qua si:


void clear(){
#ifndef _WINDOWS
system("cls");
#else
system("clear");
#endif
}



ma #ifdef _WINDOWS non è vera se sono su windows?

MItaly
11-02-2010, 19:13
La costante per verificare se sei su Windows è _WIN32, comunque ho già detto un'infinità di volte che la system va evitata; inoltre non è che qualunque sistema diverso da Windows supporta system("clear"), il controllo va raffinato un po'.
Dai un'occhiata qui (http://forum.html.it/forum/showthread.php?s=&postid=12732438#post12732438).

c_junior
12-02-2010, 13:29
si si certo che va raffinato, scusate ho sbagliato a scrivere io al posto di cross-platform dovevo dire su windows e su linux

MItaly
12-02-2010, 13:34
Se anche è solo per Windows e Linux, dovrai fare:


#lif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
// codice per Windows
#elif defined(linux) || defined(__linux) || defined(__linux__)
// codice per Linux
#else
#error Piattaforma non supportata
#endif

c_junior
12-02-2010, 13:48
#lif? non andrebbe messo #if e basta?

però ho un'altra domanda: il 32dopo win centra qualcosa con l'architettura del sistema(32 o 64 bit)?

ps:grazie

MItaly
12-02-2010, 14:39
Pardon, ho sbagliato a scrivere. Il 32 è un residuo dei tempi in cui si compilava per 16 o 32 bit (invece di adesso, che si compila per 32 o 64 bit), ed è comunque definito anche su piattaforme a 64 bit.

c_junior
12-02-2010, 14:50
ah ok allora adesso non ha più nessuna importanza se quel codice lo si compila su 32/64 bit!

MItaly
13-02-2010, 11:00
Esatto, _WIN32 è sempre definito se si compila su Windows; _WIN64, invece, è definito solo se si compila per Windows a 64 bit.

Loading