【问题标题】:#defines in objective-c#defines 在objective-c中
【发布时间】:2011-03-12 23:12:21
【问题描述】:

#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,以防万一。

【问题讨论】:

    标签: objective-c xcode c-preprocessor


    【解决方案1】:

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

    【讨论】:

    • 这是一个大项目,使用中的#defines 与我想使用它们的文件不同,我可能不得不放置整个项目才能找到它。我一定只是在做一些愚蠢的事情,我想明白了。至少现在我确定它与在 C 中的工作方式相同,谢谢。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 这很有用!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      相关资源
      最近更新 更多