0

可能重复:
Cocoa/Objective-C 中的全局变量?
在目标 c 中声明全局变量的问题

我在我的 .h 中定义了一个全局变量,其他类通过包含类“.h”文件来访问该变量。这很好用,根据我收到的建议,我现在已经将变量移动到“.m”,因为我被告知,否则每个包含 .h 的类都将重新声明它,这是正确的吗?但是现在我的其他文件无法访问它,并且我假设我不应该包含“.m”文件....我应该使用#define 预处理器,所以它只定义一次吗?我该怎么做呢?

4

3 回答 3

6

.h您可以在文件中声明变量。

全局变量.h:

extern int myGlob;

您不能在 a 中定义变量.h,您必须在 a.c或 中定义它.m

全局变量.m:

int myGlob;

globals.h您可以从需要访问的任何其他文件导入myGlob

我的应用程序.m:

#import "globals.h"

main() {
    myGlob++;
}
于 2012-06-13T07:51:10.147 回答
2

您可以在 .h 中使用#define number 123or #define string @"abc",并且任何导入它的文件都应该能够使用您选择的预处理器名称。k 是这些类型宏的通用前缀,因为它们实际上是常量值。

注意:注释表明使用您定义的预处理器和实际的全局变量(声明了 extern)之间存在差异,尽管两者都可以通过导入您声明/定义它们的 .h 文件在单独的文件中使用。

于 2012-06-13T06:28:51.317 回答
-1

静态变量只声明一次

于 2012-06-13T07:45:00.810 回答