ディレクティブ

クロスプラットフォーム対応コードを書くときにプラットフォーム依存部分を切り分けるプリプロセッサディレクティブのメモ。

  • Compiler
    • GCC
      • #ifdef __GNUC__
        • #if __GNUC__ >= 3 // GCC3.0以上
    • Borland C++
      • #ifdef __BORLANDC__
    • intel Compiler
      • #ifdef __INTEL_COMPILER
    • Microsoft Compiler
      • #ifdef _MSC_VER
        • #if _MSC_VER >=600 // C Compiler 6.0以降 VC++含む
        • #if _MSC_VER >=700 // C/C++ Compiler 7.0以降 VC++含む
        • #if _MSC_VER >=800 // VC++1.0以降
        • #if _MSC_VER >=900 // VC++2.0以降
        • #if _MSC_VER >=1000 // VC++4.0以降
        • #if _MSC_VER >=1010 // VC++4.1以降
        • #if _MSC_VER >=1020 // VC++4.2以降
        • #if _MSC_VER >=1100 // VC++5.0以降
        • #if _MSC_VER >=1200 // VC++6.0以降
        • #if _MSC_VER >=1300 // VC2002(VC7.0)以降
        • #if _MSC_VER >=1310 // VC2003(VC7.1)以降
        • #if _MSC_VER >=1400 // VC2005(VC8.0)以降
        • #if _MSC_VER >=1500 // VC2008(VC9.0)以降
        • #if _MSC_VER >=1600 // VC2010(VC10.0)以降
  • UNIX system
    • UNIX
      • #ifdef __unix
      • #ifdef __unix__
    • Linux
      • #ifdef __linux
      • #ifdef __linux__
    • FreeBSD
      • #ifdef __FreeBSD__
    • NetBSD
      • #ifdef __NetBSD__
    • Cygwin
      • #ifdef __CYGWIN__
      • #ifdef __CYGWIN32__ // 32bit版Cygwin
    • MinGW (-mno-cygwin)
      • #ifdef __MINGW32__
  • Windows system
    • CUI
      • #ifdef _CONSOLE
    • GUI
      • #ifdef _WINDOWS
    • 32bit Windows
      • #ifdef WIN32
      • #ifdef _WIN32
    • 64bit Windows
      • #ifdef _WIN64
    • Windows version
      • #ifdef WINVER
        • #if (WINVER >= 0x030a) // Windows 3.1以降
        • #if (WINVER >= 0x0400) // Windows 95/ NT4.0以降
        • #if (WINVER >= 0x0410) // Windows 98以降
        • #if (WINVER >= 0x0500) // Windows Me/ 2000以降
        • #if (WINVER >= 0x0501) // Windows XP/ Server 2003以降
        • #if (WINVER >= 0x0502) // Windows XP SP2/ Server 2003 SP1以降
        • #if (WINVER >= 0x0600) // Windows Vista/ Server 2008以降
        • #if (WINVER >= 0x0601) // Windows 7以降
      • #ifdef _WIN32_WINDOWS // Windows9x
        • #if (_WIN32_WINDOWS >= 0x0400) // Windows 95以降
        • #if (_WIN32_WINDOWS >= 0x0410) // Windows 98以降
        • #if (_WIN32_WINDOWS >= 0x0500) // Windows Me以降
      • #ifdef _WIN32_WINNT // WindowsNTx
        • // Windows 2000以降(0x0500)
          #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
        • // Windows XP/ Server 2003以降(0x0501)
          #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
        • // Windows XP SP2/ Server 2003 SP1以降(0x0502)
          #if (_WIN32_WINNT >= _WIN32_WINNT_WS03)
        • // Windows Vista以降(0x0600)
          #if (_WIN32_WINNT >= _WIN32_WINNT_VISTA)
        • // Windows Server 2008以降(0x0600)
          #if (_WIN32_WINNT >= _WIN32_WINNT_WS08)
        • // Windows 7以降(0x0601)
          #if (_WIN32_WINNT >= _WIN32_WINNT_WIN7)
      • #ifdef _WIN32_WCE // WindowsCE
        • #if (_WIN32_WCE >= 0x0420) // Windows Mobile 2003(PPC2003)
        • #if (_WIN32_WCE >= 0x0421) // Windows Mobile 2003 SE(PPC2003SE)
        • #if (_WIN32_WCE >= 0x0501) // Windows Mobile 5.0
        • #if (_WIN32_WCE >= 0x0502) // Windows Mobile 6 Professional / Classic
        • #if (WINCEOSVER >= 0x0300) // WindowsCE3.0(PPC2002)以降
        • #if (WINCEOSVER >= 0x0420) // WindowsCE4.2(PPC2003)以降
        • #if (WINCEOSVER >= 0x0500) // WindowsCE5.0(WM5.0)以降
    • Internet Explorer version
      • #ifdef _WIN32_IE
        • #if (_WIN32_IE>=0x0200) // Windows 95/NT 4.0(Comctl32.dll 4.00, Shell32.dll 4.00)
        • #if (_WIN32_IE>=0x0300) // Internet Explorer 3.0, 3.01, 3.02
        • #if (_WIN32_IE>=0x0400) // Internet Explorer 4.0
        • #if (_WIN32_IE>=0x0401) // Internet Explorer 4.01
        • #if (_WIN32_IE>=0x0500) // Internet Explorer 5.0, 5.0a, 5.0b
        • #if (_WIN32_IE>=0x0501) // Internet Explorer 5.01
        • #if (_WIN32_IE>=0x0550) // Internet Explorer 5.5
        • #if (_WIN32_IE>=0x0600) // Internet Explorer 6.0
        • #if (_WIN32_IE>=0x0601) // Internet Explorer 6.0 SP1
        • #if (_WIN32_IE>=0x0603) // Internet Explorer 6.0 SP2
        • #if (_WIN32_IE>=0x0700) // Internet Explorer 7.0
        • #if (_WIN32_IE>=0x0800) // Internet Explorer 8.0

注意
プリプロセッサは、未定義の識別子を0として扱うため、#if __GNUC__ >= 3はGCC3以上として使えるが、
GCC2系かどうかを#if __GNUC__ < 3で判定しようとすると、GCCでないものも含まれる。
参考

コメントを残す

メールアドレスが公開されることはありません。