c ++ - Bedre måde at bestemme hvilken skal bruges på runtime (Windows)?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en funktion, der rydder en terminal skærm. Det skal fungere på Windows og ethvert * Nix-baseret OS. Hvis funktionen registrerer, at opkalderens OS er Windows, vil det kontrollere, om den, der ringer op, bruger cmd.exe eller noget andet (git-bash eller cygwin).


Er der en bedre måde at gøre dette på? Jeg kan ikke lide, at jeg har brug for at stole på HOME-variablen.


Kompilator: g++


#include <cstdlib>

void clearScreen() {
  #ifdef \_WIN32
    if (std::getenv("HOME"))   // git-bash & cygwin home var is called HOME
        std::system("clear");  // cmd's home var is called HOMEPATH
    else
        std::system("cls");
  #else
    // Assume POSIX
    std::system("clear");
  #endif
}


BEMÆRK : Denne funktion er blevet testet i cmd.exe, git-bash og WSL. Det er ikke blevet testet i Cygwin.

Bedste reference