5

LinuxとWindowsの両方で画面をクリアできる機能が必要です。これを行うには、使用しているオペレーティング システムを教えてくれる指示があるかどうかを知りたいです。解決策を検索したところ、次のコードが見つかりました。

void clear_screen()
{
   #ifdef WINDOWS

    std::system ( "CLS" );

    #else

    // Assume POSIX

    std::system("clear");

    #endif
}

この関数には 2 つの問題があります。

  • わかりません。

    -> for #ifdef WINDOWS、WINDOWS はどこで定義されていますか?

  • このコードは Linux では機能しますが、Windows では機能しません。

ノート :

  • Windows XP を使用しています。

  • 非標準の機能は必要ありません...そのような「呪い」

4

4 に答える 4

7

_WIN32__gnu_linux__、などのマクロ__linux__は、問題のコンパイラによって定義されます。事前定義されたコンパイラ マクロの包括的なリストは、こちらにあります

_WIN32Windows の 32 ビット環境と 64 ビット環境の両方で定義されています。

于 2013-06-18T12:40:52.237 に答える
6

あなたが探しています

// Windows, all variants (including 64-bit and ARM)
#ifdef _WIN32

また

#ifdef __unix__

これらはコンパイラによって定義され、ヘッダー ファイルには格納されません。#includeそのため、最初にファイルを作成する必要はなく、これら#ifdefの s は常に正しい結果を返します (コンパイラをいじらない限り)

于 2013-06-18T12:18:39.777 に答える
2

WINDOWSはコンパイラによって定義されるため、この定義はコンパイラに依存する可能性があります。OS に応じて特定のコードをコンパイルするために役立ちます。

于 2013-06-18T12:21:50.507 に答える