2010-07-07 67 views
3

#defines如何在objective-c中工作? 我在C/C++中有一个背景,现在正在尝试拾取objecive-c。 #define在objective-c中似乎不起作用,就像它们在c和C++中工作的方式一样,编译器只是将所有对定义的引用替换为它们应该表示的内容。#defines in objective-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; 

任何人都知道为什么会这样,或者#defines如何通过objective-c编译器进行不同的处理。顺便说一下,我正在使用XCode,只是因为它有所作为。

回答

6

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

+0

它的一个大项目#defines在使用是在不同的文件中我想要使用它们的地方,我可能不得不把整个项目找到它。我必须做一些愚蠢的事情,搞砸了。至少现在我知道它的工作方式与C相同,谢谢。 – Tiddly 2010-07-07 18:18:20

2

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

+0

这非常有用! – ebi 2014-01-29 21:54:05

6

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