如何在C ++ Builder中有条件地编译不同平台的代码?

时间:2015-04-23 16:33:47

标签: cross-platform c++builder conditional-compilation

C ++ Builder中Android,iOS,Win32,Win64的平台条件定义是什么?我发现只有Delphi的例子。

1 个答案:

答案 0 :(得分:10)

所谓的清单常量记录在help page上。我在这里列出的平台:

┌─────────────┬───────┬──────────────────────────────┐
│ Macro       │ Value │ Description                  │
├─────────────┼───────┼──────────────────────────────┤
│ _Windows    │ 1     │ Windows platform             │
├─────────────┼───────┼──────────────────────────────┤
│ __WIN32__   │ 1     │ 32-bit Windows platform      │
├─────────────┼───────┼──────────────────────────────┤
│ _WIN64      │ 1     │ 64-bit Windows platform      │
├─────────────┼───────┼──────────────────────────────┤
│ __arm__     │       │ 32-bit ARM compiler          │
├─────────────┼───────┼──────────────────────────────┤
│ __arm64__   │       │ 64-bit ARM64 compiler        │
├─────────────┼───────┼──────────────────────────────┤
│ __APPLE__   │       │ Apple platform               │
├─────────────┼───────┼──────────────────────────────┤
│ __MACH__    │       │ MAC OSX platform             │
├─────────────┼───────┼──────────────────────────────┤
│ __ANDROID__ │       │ Android platform             │
└─────────────┴───────┴──────────────────────────────┘

这些宏是编译器内在的,因此它们没有要包含的头文件。一个例子:

#if _Windows
  // Windows platform
#elif __APPLE__
  // Apple platform
#elif __ANDROID__
  // Android platform
#else
  #error Not a supported platform
#endif