当我尝试在 h 文件中声明变量时,它显示错误 LINKER COMMAND FAILED WITH EXIT CODE -1
When i try to declare variables in h file it shows the error LINKER COMMAND FAILED WITH EXIT CODE -1
如何在 objective c 中全局声明一个变量?当我尝试在 h 文件中声明变量时,它显示错误
LINKER COMMAND FAILED WITH EXIT CODE -1
像这样声明一个全局变量:
extern int GlobalInt;
extern 部分告诉编译器这只是声明存在一个由 GlobalInt 标识的 object 类型的 int。它可能稍后定义,也可能不定义(确保它存在不是编译器的责任,这是链接器的工作)。它在这方面类似于函数原型。
在您的一个源文件中,您定义了 GlobalInt 整数:
int GlobalInt = 4;
现在,每个包含 header 的文件都可以访问 GlobalInt,因为 header 表示它存在,所以编译器很高兴,链接器会在您的其中一个文件中看到它源文件,所以它也会很高兴。只是不要定义它两次!
在 header 个文件中,将变量声明为 extern
.
extern NSInteger myGlobalInteger;
在单个实现文件中(.c
或 .m
),声明为正常。
NSInteger myGlobalInteger;
如果您在 header 中省略 extern
,则会导致在 imports/includes [=27] 的每个文件中创建一个具有相同名称和作用域的新变量=].这会导致 link 麻烦,因为您最终会得到重复的符号。
在 header 中将变量声明为 extern
告诉编译器某处存在这样一个具有给定类型的变量。它不关心它真正被定义的地方。在 link 时,link 用户将看到所有这些对真实声明的引用和 fix-up 引用。
请在.m文件中也定义相应的变量。请找到下面的例子:
对于标准全局变量,在应用程序终止和重新启动时不持久,将其添加到您选择的头文件 (*.h
) 中:
extern NSInteger MYGlobalVariable;
然后把这个放到实现文件中(*.m
,*.c
,*.cpp
):
MYGlobalVariable = 0; // Or ny other default value.
这就是你做面包和黄油全局变量的方式。
如何在 objective c 中全局声明一个变量?当我尝试在 h 文件中声明变量时,它显示错误
LINKER COMMAND FAILED WITH EXIT CODE -1
像这样声明一个全局变量:
extern int GlobalInt;
extern 部分告诉编译器这只是声明存在一个由 GlobalInt 标识的 object 类型的 int。它可能稍后定义,也可能不定义(确保它存在不是编译器的责任,这是链接器的工作)。它在这方面类似于函数原型。
在您的一个源文件中,您定义了 GlobalInt 整数:
int GlobalInt = 4;
现在,每个包含 header 的文件都可以访问 GlobalInt,因为 header 表示它存在,所以编译器很高兴,链接器会在您的其中一个文件中看到它源文件,所以它也会很高兴。只是不要定义它两次!
在 header 个文件中,将变量声明为 extern
.
extern NSInteger myGlobalInteger;
在单个实现文件中(.c
或 .m
),声明为正常。
NSInteger myGlobalInteger;
如果您在 header 中省略 extern
,则会导致在 imports/includes [=27] 的每个文件中创建一个具有相同名称和作用域的新变量=].这会导致 link 麻烦,因为您最终会得到重复的符号。
在 header 中将变量声明为 extern
告诉编译器某处存在这样一个具有给定类型的变量。它不关心它真正被定义的地方。在 link 时,link 用户将看到所有这些对真实声明的引用和 fix-up 引用。
请在.m文件中也定义相应的变量。请找到下面的例子:
对于标准全局变量,在应用程序终止和重新启动时不持久,将其添加到您选择的头文件 (*.h
) 中:
extern NSInteger MYGlobalVariable;
然后把这个放到实现文件中(*.m
,*.c
,*.cpp
):
MYGlobalVariable = 0; // Or ny other default value.
这就是你做面包和黄油全局变量的方式。