如何处理 OS X Yosemite Core 标头中非 gcc 兼容的代码

2023-12-06

我维护一个混合 C 和 C++ 命令行程序,需要在 Linux、Windows 和 OS X 上运行。我最近升级到 Yosemite,但我的 OS X 构建现在失败了。错误是:

/usr/include/dispatch/object.h:143:15: error: expected identifier or '(' before '^' token

其他人也遇到过这个错误.

失败的代码行是使用“^”的 typedef,它是提供对闭包支持的非标准扩展.

根本问题似乎是一些 Apple 标准标头开始需要 Clang 特定扩展。不幸的是,我们的程序有一组非常深的依赖项,其中一些无法在 Clang 下编译。我们一直在使用通过 MacPorts 安装的 GCC 编译器。我现在有一个解决方法:更改object.h标头与 GCC 兼容。但是,破解下面的包含文件/usr/include在我看来,这就像自找麻烦。

OS X/Clang 专家能否提出更可持续的方法来解决这个问题?这会限制 GCC 在 OS X 上的未来用途吗?


对于未来的访问者,以下应该可以让大多数标头与最新的 GCC 版本一起使用:

In dispatch/object.h change

typedef void (^dispatch_block_t)(void);

to

#ifdef __clang__
typedef void (^dispatch_block_t)(void);
#else
typedef void* dispatch_block_t;
#endif

and in Availability.h change

#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED)

to

#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && defined(__clang__)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理 OS X Yosemite Core 标头中非 gcc 兼容的代码 的相关文章

  • gcc 删除内联汇编代码

    看起来 gcc 4 6 2 删除了它认为函数中未使用的代码 test c int main void goto exit handler asm volatile jmp 0x0 exit return 0 拆解main 0x0804840
  • GCC:如何在 MCU 上完全禁用堆使用?

    我有一个在基于 ARM Cortex M 的 MCU 上运行并用 C 和 C 编写的应用程序 我用gcc and g 编译它并希望完全禁用任何堆使用 在 MCU 启动文件中 堆大小已设置为 0 除此之外 我还想禁止代码中意外使用堆 换句话说
  • 如何最好地以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

    In my makefile我有以下目标 它将文本 HTML 资源 编译 为unsigned char数组使用xxd i http linuxcommand org man pages xxd1 html 我将结果包装在匿名命名空间和标头保
  • Docker 不遵循构建目录中的符号链接

    我正在对一个应用程序进行 Docker 化 其中涉及通过 Clang 将二进制文件与其他 C 文件链接 我们维护二进制文件的符号链接版本 因为它们在整个代码库中使用 我的 Docker 构建目录包含整个代码库 包括源文件以及这些源文件的符号
  • 让 GCC 使用进位逻辑进行任意精度算术而不需要内联汇编?

    当使用任意精度算术 例如 512 位整数 时 有没有办法让 GCC 在不使用内联汇编的情况下使用 ADC 和类似指令 乍一看 GMP 的源代码表明他们只是为每个支持的平台提供了汇编实现 这是我编写的测试代码 它将命令行中的两个 128 位数
  • 为什么GCC编译的应用程序总是包含_mcount符号?

    库并不总是包含 mcount 符号 但应用程序包含 您可以使用 gobjdump 或 nm 实用程序验证这一点 我读过 mcount 用于实现分析 但即使禁用分析并启用优化 O2 该符号仍然存在 它还有其他额外的用途吗 更新 我使用的是 S
  • python gcc编译错误

    我知道 gcc 上有很多线程 特别是 command gcc failed with exit status 1 我已经查看了所有线程 但仍然无法解决此问题 我只会使用 gcc 或 mingw32 来执行与 python 相关的任务 例如使
  • 具有重复符号的 C++ 插件库上的段错误

    我有一个跨平台 C 应用程序 它分为多个共享库 并从插件共享库加载附加功能 插件库应该是自包含的并自行运行 无需了解或依赖于调用应用程序 其中一个插件包含从主应用程序复制的代码 因此包含与引擎中的符号名称重复的符号名称 是的 我知道这通常是
  • mfence 和 asm 易失性 ("" : : : "内存") 的区别

    据我了解 mfence是硬件内存屏障 而asm volatile memory 是编译器障碍 但是 可以asm volatile memory 用来代替 mfence 我感到困惑的原因是这个链接 http gcc gnu org ml gc
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • C中sizeof的内部机制?

    我使用 sizeof 来获取 C 中结构的大小 但得到的结果是意外的 struct sdshdr int len int free char buf int main printf struct len d n sizeof struct
  • 如何从外部模块导出符号?

    我在内核源代码树之外进行编码 有两个模块 第一个printt有一个功能printtty 将字符串打印到当前 tty 以及第二个模块hello这会调用printtty 在初始化期间 我已经添加了EXPORT SYMBOL printtty 在
  • 如何防止函数被优化

    我正在优化整个代码 但我不希望优化某个函数 例如出于调试目的 有没有办法在 gcc 3 4 编译器上做到这一点 最简单的方法是将函数放入其自己的编译单元中 在没有优化标志的情况下编译该单元 最近的 gcc 版本 我认为是 4 4 有一个属性
  • 错误:命名空间“std”中没有名为“enable_if_t”的模板;您的意思是“enable_if”吗?

    我正在 macOS 10 13 6 上使用 Qt 5 11 3 进行编译 Qt使用的clang版本是 Applications Xcode app Contents Developer Toolchains XcodeDefault xct
  • 警告构建使用导出符号的内核模块

    我有两个内核模块 例如 modA 和 modB modA 导出一个符号EXPORT SYMBOL symA modB 使用它 我有标题modA h对于modA extern void symA int param and in modB c
  • 使用Address Sanitizer和gcc7.1.0时如何生成核心转储

    我编译了我的代码 fsanitize address在 CentOS 7 2 1511 上 当我将 gcc 更新到 7 1 0 时 它无法再生成核心转储文件 有谁能够帮助我 gcc编译选项 lm g3 Wall Wno unknown pr
  • JXA:写入文件时设置UTF-8编码

    如果我使用标准添加编写文本文件 显然我可以在参数包中配置编码 在AppleScript中我会写 class utf8 但是在JXA中使用哪个值 我尝试了字符串 UTF8 utf8 class utf8 但没有成功 错误始终是 错误 无法转换
  • 为什么 GCC 6.3 在没有显式 C++11 支持的情况下编译此 Braced-Init-List 代码?

    我有一个问题大括号括起来的列表的不同含义 https stackoverflow com q 37682392 2642059 我知道C 03不支持C 11initializer list 然而 即使没有 std c 11编译器标志 gcc
  • 什么是海湾合作委员会 4.1.3?

    根据 gcc 发布页面 http www gnu org software gcc releases html http www gnu org software gcc releases html 版本4 1 3不存在 不过 我在很多地方
  • gcc 和 ld 中与位置无关的可执行文件的 -fPIE 选项是什么?

    它将如何更改代码 例如函数调用 PIE是支持地址空间布局随机化 ASLR http en wikipedia org wiki Address space layout randomization在可执行文件中 在创建PIE模式之前 程序的

随机推荐

  • 在 JavaScript 中获取对象变量名称

    我正在创建 JavaScript 代码 并且遇到了一种情况 我想在对象方法中读取对象名称 字符串 我想要实现的示例代码如下所示 Define my object var TestObject function return getObjec
  • 未捕获的类型错误:对象 # 没有方法“addEventListener”

    我在一个相对简单的 HTML 文件中有一个按钮元素 我正在尝试添加事件侦听器 但不断收到错误 我不知道为什么 Uncaught TypeError Object
  • 如何在空行上分解字符串? [复制]

    这个问题在这里已经有答案了 我正在努力寻找解决方案 如何分解下面的数据样本数据 2013 Fondermann LP Hold your Ground LP 2012 Zwo 80 MiniLP Sassy Society Demo Pog
  • Spring JPA如何确保数据写入持久存储

    我试图扩展这个例子 https github com scratches jpa method security sample通过在控制器中添加一个方法来 注册 其中新用户会动态添加到存储库中 默认的现有用户集添加到 import sql
  • Java 的 HTML/XML 解析器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 哪些 HTML 解析器具有
  • 如何使用OpenCv叠加图像?

    如何叠加两个图像 本质上 我有一个没有 Alpha 通道的背景 以及一张或多张具有 Alpha 通道的图像 需要彼此叠加 我尝试了以下代码 但叠加结果很糟糕 create our out image Mat merged info widt
  • 南特邮件问题

    任何人都可以建议我如何配置通过 nant 发送邮件 我什至浏览了该链接 但没有成功 感谢致敬 麦迪 您将使用类似这样的东西
  • 类型“...”没有定义构造函数

    我注意到编译器错误类型 没有定义构造函数当我错误地尝试实例化特定类时生成 这让我想知道我将如何编写自己的类 当有人试图实例化它时 该类会沉淀此消息 那么下面的代码 我需要做什么MyClass namespace MyNamespace cl
  • 如何使用 JS 更改 @keyframes? [复制]

    这个问题在这里已经有答案了 我在用着 progressBar background color 247BA0 width 150px padding 10px border radius 5px animation progressBar
  • Oracle 中的重音和大小写不敏感 COLLATE 等效项

    在 Microsoft SQL Server 中 如果我想在区分大小写的数据库中不区分大小写地搜索 我可以运行以下 SQL SELECT FROM MyTable WHERE MyField BobDillon COLLATE Latin1
  • 空手道 - 无法循环运行动态场景大纲

    这是我的功能文件 它只加载 json 文件并想要迭代相同的文件 Background def kittens read json test json Scenario Outline cat name
  • 类型错误:传递给 Series.__format__ 的格式字符串不受支持

    我试图在我的仪表卡上添加千位分隔符 但我所有的努力都是徒劳的 发现这个解决方案更准确 但它给了我一个错误 类型错误 传递给系列的格式字符串不受支持 format app callback Output sls children Output
  • 在 RDLC 中将表包装为多列

    需要为 RDLC 报告生成动态列表 名称 页码 但我需要将它包装成这样的三列 有什么解决办法吗 我会建立一个这样的矩阵 行组基于表达式 Ceiling RowNumber Nothing 3 列组基于表达式 RowNumber Nothin
  • 如何在 Visual Studio Code 中打开交互式 shell/REPL?

    我正在使用 Visual Studio Code 并且我想要一个可以在其中运行单个 Python 指令的 REPL 我发现了一些一年前的微软文档上面显示选择 视图 gt 其他 Windows gt 交互式 菜单项 但我的 VS Code 版
  • 如何从查询中获取结果,其中第一列在更改之前不会重复其值

    我有一个仅返回几行的查询 但我需要以这样的方式对结果进行分组 使得前两列在其值发生变化之前不会重复 让我告诉你我的意思 这样会更容易 这是查询 select isnull d FirstName isnull d LastName as C
  • Internet Explorer 中的 JavaScript 数组索引“未定义”

    以下脚本打印不明确的字符串中每个字符的控制台 但在 Chrome 中可以正常工作 我是否必须对数组进行一些操作才能使其在所有浏览器中正常工作 The 部分浏览器支持 但并非全部 类似数组的字符访问 上面的第二种方式 不属于 ECMAScri
  • C# 简单图像调整大小:文件大小不缩小

    我对下面的代码有疑问 我下面的代码成功地运行了一个目录 并将图片的分辨率设置为较小的尺寸 但是 文件大小不会改变 例如 尺寸为 2400x1800 文件大小为 1 5MB 的图像将缩放至 800x600 但 800x600 图片的文件大小仍
  • 调用 Sub 和 Application.Run 之间的区别

    在我的企业中 我们有几个团队致力于非常简单的宏 我正在尝试使它们彼此可读并且格式相似 以便新加入者可以开始处理数据 我提到简单的宏 因为没有人会使用带参数的 Subs 无论如何 大多数都是从 Macro Recorder 派生的 一半的团队
  • JSON 反序列化为 json 中缺少键的类 [字符串可以是单个字符串或列表字符串]

    我有以下课程 Serializable public class filters public List
  • 如何处理 OS X Yosemite Core 标头中非 gcc 兼容的代码

    我维护一个混合 C 和 C 命令行程序 需要在 Linux Windows 和 OS X 上运行 我最近升级到 Yosemite 但我的 OS X 构建现在失败了 错误是 usr include dispatch object h 143