#defines如何在Objective-C中工作?
我有C / C ++的背景,我现在正在尝试选择Objective-C。 #defines似乎在objective-c中的工作方式与它们在c和C ++中的工作方式相同,其中编译器只是将对定义的所有引用替换为它们应该表示的内容。
当我尝试在Objective-C中使用#defines时,它们有时只能工作。就像我做这样的事情一样;
#define NUMBER 5
int myArray[NUMBER];
我收到编译错误,说有一个方括号丢失,如果我使用这一行而不是它可以正常工作;
int myArray[5];
当然这些都应该是一回事吗?
此外,如果我尝试在任何类型的方程式中使用#define值,我会得到类似的编译器错误。这段代码不起作用;
#define NUMBER 5
float var = NUMBER * 0.2;
这在哪里好;
float var = 5 * 0.2;
任何人都知道为什么会这样,或者Objective-C编译器如何以不同的方式处理#defines。顺便说一句,我正在使用XCode,只是因为这会产生影响。
答案 0 :(得分:6)
#define
与C中的工作方式完全相同。在我尝试的快速测试中,所有示例都适合我。您可能还有其他问题导致您看到的错误 - 您是否可以发布实际代码和错误消息的文本?
答案 1 :(得分:6)
当#define
中出现意外分号时,我通常会遇到类似的问题。
答案 2 :(得分:2)
为了弄清楚#defines的行为,我建议使用Xcode的Build-> Preprocess命令来准确查看预处理器为您生成的文本。