什么是“null 定义的宏”?

What's a 'null defined macro'?

提问人: 提问时间:8/22/2008 最后编辑:Brian Tompsett - 汤莱恩 更新时间:1/31/2016 访问量:1242

问:

我正在学习 objective-C 和 Cocoa。在我正在学习的 Apple 教程中,有一个旁注说:

IBOutlet是一个 null 定义的宏,C 预处理器在编译时将其删除。

我很好奇 - 什么是空定义的宏?

Objective-C C 预处理器

评论


答:

8赞 Greg Hewgill 8/22/2008 #1
#define IBOutlet

每当在程序文本中使用 IBOutlet 时,它都会被替换为任何内容。

8赞 Matt Dillard 8/22/2008 #2

仅供参考,在这种特殊情况下,偶数存在的原因很简单,以便Interface Builder可以解析源文件并从中收集一些理解。这是一个线索(嗯,比线索更强一点),在设计 UI 时,前面的变量应该在 Interface Builder 中显示为 Outlet。IBOutletIBOutlet

7赞 botismarius 9/5/2008 #3

null 定义的宏是预处理器将不替换为任何内容(将被删除)的宏。它的作用是提供有关代码中某些内容的提示,例如:

#define IN
#define OUT
#define INOUT

int myFunction(IN char *name, INOUT char *address, OUT char *phone);

此声明表明是函数的输入变量,既是输入又是输出,是输出变量。nameaddressphone

评论

1赞 schwa 10/4/2008
真是太可爱了。让我想起了艾达(显然)。我更喜欢在参数名称前面加上 in 或 out。但效果相同。
0赞 Kos 1/7/2011
同样,除了没有用疯狂的宏污染命名空间。;)
0赞 schwa 9/29/2008 #4

此外,如果您不确定任何内容是如何定义的,请双击它,Xcode 将在原始源文件中打开定义。

0赞 schwa 9/29/2008 #5

哦,当我在的时候。选项双击将(尝试)打开双击符号的文档。

评论

3赞 Amarghosh 10/18/2010
为什么不合并两个答案并删除一个?