GNU/Linux >> Linux の 問題 >  >> Linux

Windows および Linux での C++ コンパイル:ifdef スイッチ

私はそれが答えではないことを知っていますが、誰かがQtで同じように見える場合は追加します

Qt

https://wiki.qt.io/Get-OS-name-in-Qt

QString Get::osName()
{
#if defined(Q_OS_ANDROID)
    return QLatin1String("android");
#elif defined(Q_OS_BLACKBERRY)
    return QLatin1String("blackberry");
#elif defined(Q_OS_IOS)
    return QLatin1String("ios");
#elif defined(Q_OS_MAC)
    return QLatin1String("osx");
#elif defined(Q_OS_WINCE)
    return QLatin1String("wince");
#elif defined(Q_OS_WIN)
    return QLatin1String("windows");
#elif defined(Q_OS_LINUX)
    return QLatin1String("linux");
#elif defined(Q_OS_UNIX)
    return QLatin1String("unix");
#else
    return QLatin1String("unknown");
#endif
}

使用するコンパイラによって異なります。

たとえば、Windows の定義は WIN32 です。 または _WIN32 .

そして Linux の定義は UNIX である可能性があります または __unix__ または LINUX または __linux__ .


できること:

#if MACRO0
    //code...
#elif MACRO1
    //code...
#endif

…識別子の場所:

    __linux__       Defined on Linux
    __sun           Defined on Solaris
    __FreeBSD__     Defined on FreeBSD
    __NetBSD__      Defined on NetBSD
    __OpenBSD__     Defined on OpenBSD
    __APPLE__       Defined on Mac OS X
    __hpux          Defined on HP-UX
    __osf__         Defined on Tru64 UNIX (formerly DEC OSF1)
    __sgi           Defined on Irix
    _AIX            Defined on AIX
    _WIN32          Defined on Windows

使用:

#ifdef __linux__ 
    //linux code goes here
#elif _WIN32
    // windows code goes here
#else

#endif

Linux
  1. Windows10およびWSL2でLinuxファイルシステムにアクセスする方法

  2. WindowsとLinuxの相互運用性:Sambaの概要

  3. Nova-agent(Linux)およびRackspaceエージェント(Windows)

  1. Windows10とMXLinuxをデュアルブートする方法

  2. Kali Linux 1.0.5 とソフトウェア無線

  3. C、C++ で Windows または Linux を検出

  1. Linuxを使用してWindowsでpodmanを起動して実行する

  2. 母がWindowsからLinuxに切り替えるのをどのように手伝ったか

  3. WindowsとLinuxの間にSSH接続を確立します