【发布时间】:2018-03-09 11:10:12
【问题描述】:
使用 Xcode 8.3.2,如果我在 Objective-C 文件中使用 nil 并选择 Product > Perform Action > Preprocess "MySourceFile.m",nil 将变为 ((void *)0)。我有几个问题:
- 如果
nil是语言的一部分,为什么预处理器要对它做任何事情?为什么编译步骤不直接接受nil? - 当
nil的全部要点是一个空的object 指针时,为什么nil会变成((void *)0)?为什么不将其预处理为((id)0)之类的东西,就像 this one 之类的来源定义的那样?
【问题讨论】:
-
对于一个全新的项目是否如此?您在其中看到的项目是否包含一些奇怪的标题
#definesnil?或者构建定义这样一个宏的设置?
标签: objective-c xcode pointers clang c-preprocessor