C++ 如何在Xcode中定义DOBJC_OLD_DISPATCH_原型?

C++ 如何在Xcode中定义DOBJC_OLD_DISPATCH_原型?,c++,xcode,clang,C++,Xcode,Clang,我使用Xcode 11,需要复制此编译器命令: cc -g -Wall -Wall -Wextra -std=c99 -pedantic \ -DOBJC_OLD_DISPATCH_PROTOTYPES -c -o example.o example.c 将OBJC\u OLD\u DISPATCH\u prototype添加为用户定义的宏,对构建设置没有任何价值,这没有帮助。在源代码中定义它也失败了,因为它告诉我Xcode已经通过命令行定义了它。尽管将一些可疑标志设置为No,但Xco

我使用Xcode 11,需要复制此编译器命令:

cc -g -Wall -Wall -Wextra -std=c99 -pedantic \
    -DOBJC_OLD_DISPATCH_PROTOTYPES -c -o example.o example.c
OBJC\u OLD\u DISPATCH\u prototype
添加为用户定义的宏,对构建设置没有任何价值,这没有帮助。在源代码中定义它也失败了,因为它告诉我Xcode已经通过命令行定义了它。尽管将一些可疑标志设置为
No
,但Xcode似乎一直在执行
#define OBJC_OLD_DISPATCH_prototype 1
。我怎样才能禁用它


我不知道Xcode是如何工作的,但我看到两点

在您发布的图像中,您要求定义一个类似于
DOBJC\u OLD\u DISPATCH\u prototype
,但在命令行中显示它是
OBJC\u OLD\u DISPATCH\u prototype
。你想定义哪一个?(注意图像中的第一个
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\u OLD\u DISPATCH\u原型

这将消除
1

你有更多的信息