[ios]在 Xcode 修好"词汇或预处理器的问题-使用扩展名"警告吗?

标签: Xcode ios
发布时间: 2017/3/27 20:30:54
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我继承了一个新的项目,有哪几种保留周期警告引起隐式保留自我在各块内。

在尝试修复这些,我已经写了

__weak typeof(self) weakSelf = self;

若要创建在块中使用的弱引用。

然而,诉 5.1.1 Xcode 给难懂的警告

Lexical or Preprocessor Issue 
Extension used

我在损失这里 — — 是什么意思,我如何摆脱它?

解决方法 1:

你得到此警告的使用 typeof 如果在生成设置中启用了"迂腐的警告"。 从"快速帮助"为此设置︰

描述问题所有警告都要求的严格的 ISO C 和 ISO c + +;拒绝使用禁止的扩展名的所有程序和其他一些不遵循 ISO C 和 ISO c + + 的程序。 ISO c、 遵循 ISO C 标准使用任何-std 选项所指定的版本。 [GCC_WARN_PEDANTIC,-迂腐]

我不是专家 (ISO) C 标准,但按照https://gcc.gnu.org/onlinedocs/gcc/Typeof.html:

如果您正在编写头文件,必须工作时列入 ISO C 程序,写 __typeof__ 而不是 typeof 。请参阅备用关键字。

http://clang.llvm.org/docs/UsersManual.html:

解析器认识到" asm "和" typeof "作为关键词在 gnu * 模式; 备选案文" __asm__ "和" __typeof__ "承认在所有模式中。

您可以使用 __typeof__ 相反如果你不想要禁用的警告︰

__weak __typeof__(self) weakSelf = self;
赞助商