【问题标题】:What C preprocessor conditional should I use for OS X specific code?我应该为 OS X 特定代码使用什么 C 预处理器条件?
【发布时间】:2010-12-04 11:34:26
【问题描述】:

对于 OS X 特定代码,我应该使用什么 C 预处理器条件?如果我为 OS X 编译,我需要包含一个特定的库;如果我为 Linux 编译,我需要包含一个不同的头文件。

我知道有 __APPLE__,但我不知道这是否是 OS X 10.x 的当前条件。

【问题讨论】:

    标签: c macos c-preprocessor conditional-compilation


    【解决方案1】:

    This page 包含所有操作系统预定义宏的列表。

    对于 mac OSX,__APPLE__ && __MACH__ 都需要定义。

    【讨论】:

      【解决方案2】:

      旧式原始:

      #ifdef WIN32
      // windows.
      #elif __APPLE__
      // osx and ios.
      #endif
      

      【讨论】:

        【解决方案3】:

        此代码示例可能对您有所帮助 -

        if defined(__APPLE__)
        #include "TargetConditionals.h"
          if (!defined(TARGET_OS_IPHONE) && !defined(TARGET_IPHONE_SIMULATOR))
         {
           //write your OSX specific code here
         } 
        

        【讨论】:

          【解决方案4】:

          __APPLE__ 会告诉您您正在 Apple 平台上进行编译。除非您需要支持 OS X 之前的 MacOS 版本,否则应该已经足够了。或者,您可以使用 __APPLE____MACH__ 来确保您在 OS X 上进行编译。

          【讨论】:

            【解决方案5】:

            This list of operating system macros 表示存在 __APPLE____MACH__ 表示 OSX。

            也在the source for fdisk的部分第18行确认。

            【讨论】:

              【解决方案6】:

              如果我没记错的话,是__APPLE__ :)

              【讨论】:

              • 我相信这适用于 MAC 和 iOS。
              猜你喜欢
              • 2011-01-30
              • 1970-01-01
              • 1970-01-01
              • 2011-01-11
              • 2010-09-13
              • 2017-11-18
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多