c++ - 如何在 Xcode 中定义 DOBJC_OLD_DISPATCH_PROTOTYPES?
问题描述
我使用 Xcode 11 并且需要复制这个编译器命令:
cc -g -Wall -Wall -Wextra -std=c99 -pedantic \
-DOBJC_OLD_DISPATCH_PROTOTYPES -c -o example.o example.c
将OBJC_OLD_DISPATCH_PROTOTYPES
没有价值的用户定义宏添加到构建设置没有帮助。通过告诉我它已经通过命令行由 Xcode 定义,在源代码中定义它也失败了。尽管设置了一些可疑的标志No
,但 Xcode 似乎仍在执行#define OBJC_OLD_DISPATCH_PROTOTYPES 1
。我怎样才能禁用它?
解决方案
我不知道 Xcode 是如何工作的,但我看到了两点。
在您发布的图像中,您要求定义类似DOBJC_OLD_DISPATCH_PROTOTYPES
,但在命令行中您显示它是OBJC_OLD_DISPATCH_PROTOTYPES
。你想定义哪一个?(注意D
图像中的第一个:它不在命令行中。)
第一个D
命令行参数将是:
-DDOBJC_OLD_DISPATCH_PROTOTYPES
(这-D
是定义,其余的是定义。)
通常,该定义应在预处理器选项中进行,而不是在编译器中。你可以在这里看到一个例子,虽然我不知道这个例子是否过时了。(应该有一个选项来设置预处理器定义。)
如果 Xcode 无论如何都将其定义为1
,您可以在需要时重新定义它:
#ifdef OBJC_OLD_DISPATCH_PROTOTYPES
#undef OBJC_OLD_DISPATCH_PROTOTYPES
#define OBJC_OLD_DISPATCH_PROTOTYPES
#endif
(或DOBJC_OLD_DISPATCH_PROTOTYPES
。)
那将摆脱1
.
你有更多信息在这里。
推荐阅读
- sql - 将 TO_CHAR 结果分配给 VARCHAR2、NVARCHAR2
- python - 如何在熊猫中映射不同数据框基础日期时间的列
- excel - Excel - 如果条件具有 SPSS ANOVA 显着性的三个值
- mysql - 无法连接到 Azure Database for MySQL
- android - 如何保存片段状态以避免重新创建它们
- node.js - 在 forEach 循环中运行 sequelize 查询。无法处理结果
- ios - UIPageViewController 与 WKWebView
- angular - 使 Angular 7、Angular-Material、Node、Express、Sequelize-Typescript 和 Postgres 协同工作的问题
- amazon-web-services - 如何仅显示 boto3 instance.create_image() 返回的 AMI id
- javascript - 如何在url angularjs中设置两个动态':id'?