在Xcode中修复“Lexical或Preprocessor Issue - Extension used”警告?

时间:2014-08-26 17:42:03

标签: ios xcode

我继承了一个新项目,该项目有多个保留周期警告,这是由于在各个区块中隐含地保留了自我。

在尝试解决这些问题时,我已写过

__weak typeof(self) weakSelf = self;

创建一个弱引用以便在块中使用。

然而,Xcode v.5.1.1给出了神秘的警告

Lexical or Preprocessor Issue 
Extension used

我在这里不知所措 - 这意味着什么,我怎么能摆脱它呢?

1 个答案:

答案 0 :(得分:7)

如果在构建设置中启用了“迂腐警告”,则会出现typeof使用此警告。 从此设置的“快速帮助”:

  

描述发出严格的ISO C和ISO要求的所有警告   C ++;拒绝使用禁止扩展的所有程序,以及其他一些程序   不遵循ISO C和ISO C ++的程序。对于ISO C,请遵循   由任何使用的-std选项指定的ISO C标准的版本。   [GCC_WARN_PEDANTIC,-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;