#defines in objective-c

时间:2010-07-07 17:56:27

标签: objective-c xcode c-preprocessor

#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,只是因为这会产生影响。

3 个答案:

答案 0 :(得分:6)

Objective-C中的

#define与C中的工作方式完全相同。在我尝试的快速测试中,所有示例都适合我。您可能还有其他问题导致您看到的错误 - 您是否可以发布实际代码和错误消息的文本?

答案 1 :(得分:6)

#define中出现意外分号时,我通常会遇到类似的问题。

答案 2 :(得分:2)

为了弄清楚#defines的行为,我建议使用Xcode的Build-> Preprocess命令来准确查看预处理器为您生成的文本。