【发布时间】:2015-03-14 14:33:19
【问题描述】:
我维护一个需要在 Linux、Windows 和 OS X 上运行的混合 C 和 C++ 命令行程序。我最近升级到 Yosemite,我的 OS X 构建现在失败了。错误是:
/usr/include/dispatch/object.h:143:15: error: expected identifier or '(' before '^' token
Other folks have run into this bug。
失败的代码行是一个使用'^'的typedef,它是non-standard extension providing support for closures。
潜在的问题似乎是一些 Apple 标准头文件开始需要 Clang 特定的扩展。不幸的是,我们的程序有一组非常深的依赖项,其中一些在 Clang 下无法编译。我们一直在使用通过 MacPorts 安装的 GCC 编译器。我现在有一个解决方法:将 object.h 标头中的行更改为与 GCC 兼容。但是,在我看来,破解 /usr/include 下的包含文件就像是在自找麻烦。
任何 OS X/Clang 专家能否提出更可持续的方法来解决这个问题?这是否会限制 GCC 在 OS X 上的未来用途?
【问题讨论】:
-
Clang 是 Apple 为 OS X 支持的唯一编译器。GCC 已被弃用且不受支持。我不希望它继续运作。
-
我担心@VariableLengthCoder 可能大部分是正确的。
-
这让我很伤心。哦,好吧,我们现在仍然可以在 Snow Leopard 下构建。
标签: gcc clang osx-yosemite