我怎么知道我在做什么操作系统?

BBe*_*eta 5 c c++

我需要一个可以在Linux和Windows中清除屏幕的功能.为此,我想知道是否有一些说明可以告诉我我正在使用的操作系统.我搜索了解决方案,我找到了以下代码:

void clear_screen()
{
   #ifdef WINDOWS

    std::system ( "CLS" );

    #else

    // Assume POSIX

    std::system("clear");

    #endif
}
Run Code Online (Sandbox Code Playgroud)

这个功能有两个问题:

  • 我不明白.

    - > for #ifdef WINDOWS,WINDOWS定义在哪里?

  • 此代码适用于Linux,但在Windows中不起作用.

注意 :

  • 我正在使用Windows XP.

  • 我不想要任何非标准功能......比如"诅咒"

dev*_*ull 7

宏如_WIN32,__gnu_linux__,__linux__是由所讨论的编译器定义.您可以在此处找到预定义编译器宏的完整列表.

_WIN32 是为Windows的32位和64位环境定义的.


Tom*_*rdt 6

您正在寻找

// Windows, all variants (including 64-bit and ARM)
#ifdef _WIN32
Run Code Online (Sandbox Code Playgroud)

要么

#ifdef __unix__
Run Code Online (Sandbox Code Playgroud)

这些是由编译器定义的,不存储在头文件中.因此,您不需要首先#include使用文件,并且这些#ifdef将始终提供正确的结果(除非您弄乱编译器)

  • +1,但你可能还应该在第二部分解决"这些被定义在哪里"的问题 (3认同)
  • @BBeta是的,是的. (2认同)
  • @BBeta为每个超过16位的窗口,因为你没有列出MS DOS你应该没事. (2认同)