用于 OSX 检测的 C 预处理器是否适用于 Mojave?

Does C preprocessor for OSX detection work on Mojave?

Mac OSX 的 C 预处理器是否无法正确使用 Mojave,还是我犯了一些愚蠢的错误?下面的代码编译但不会将 "test" 打印到控制台。

根据 https://sourceforge.net/p/predef/wiki/OperatingSystems/ 和多个 Stack Overflow 帖子,我查看了 __APPLE__ 应该 可以做到这一点。我也试过 __MACH__ 并使用 __APPLE__ && __MACH__ 但这也不起作用。

我正在通过 gcc 在终端中编译。

有没有可能这些不适用于几周前才发布的最新版本 OSX?在更新到 Mojave 之前,我从来没有遇到过这个问题。

我也试过调用一个函数来代替 printf("test"); 但结果是一样的。

#include <stdio.h>
int main()
{  
    #ifdef __APPLE__
      printf("test");
    #endif

    return 0;
}

重新安装 GCC 似乎解决了问题。当我在终端中 运行 gcc -dM -E - < /dev/null 时,gcc 中缺少 #define __APPLE__ 1。它在重新安装时返回。升级可能导致腐败。