Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [c++]Pulire la console

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153

    [c++]Pulire la console

    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
    cogli l'attimo

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Puoi inserire una

    #ifdef _WINDOWS

    per la compilazione condizionale
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    ma io vorrei creare una funzione generale che mi effettui la pulizia della console:

    va bene se faccio cosi:
    Codice PHP:
    void clear(){
     
    #ifdef _WINDOWS
      
    system("cls");
     
    #else
      
    system("clear");
     
    #endif

    --------
    edit quella di sopra non funziona questa qua si:
    Codice PHP:
    void clear(){
     
    #ifndef _WINDOWS
      
    system("cls");
     
    #else
      
    system("clear");
     
    #endif

    ma #ifdef _WINDOWS non è vera se sono su windows?
    cogli l'attimo

  4. #4
    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.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    si si certo che va raffinato, scusate ho sbagliato a scrivere io al posto di cross-platform dovevo dire su windows e su linux
    cogli l'attimo

  6. #6
    Se anche è solo per Windows e Linux, dovrai fare:
    codice:
    #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
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    #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
    cogli l'attimo

  8. #8
    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.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    ah ok allora adesso non ha più nessuna importanza se quel codice lo si compila su 32/64 bit!
    cogli l'attimo

  10. #10
    Esatto, _WIN32 è sempre definito se si compila su Windows; _WIN64, invece, è definito solo se si compila per Windows a 64 bit.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.