在objective-c中使用常量。重复符号问题
我有两个带常数的类 例如,有一个名为class_a.m的类包含一个常数在objective-c中使用常量。重复符号问题,objective-c,Objective C,我有两个带常数的类 例如,有一个名为class_a.m的类包含一个常数kWidth=150 我还有一个名为class_b.mcaontaina常量kWidth=200 在运行我的项目之后,我得到了一个带有重复符号的错误,但是这些文件没有嵌套(我的意思是类a到类b或者类b到类a)。我也只使用这个constantin实现 资料来源: const int kWidht = 150; 错误说明: ld: duplicate symbol _kWidht... 谢谢你的帮助 如果常量仅在单个实现文件中
kWidth=150
我还有一个名为class_b.mcaontaina常量kWidth=200
在运行我的项目之后,我得到了一个带有重复符号的错误,但是这些文件没有嵌套(我的意思是类a到类b或者类b到类a)。我也只使用这个constantin实现
资料来源:
const int kWidht = 150;
错误说明:
ld: duplicate symbol _kWidht...
谢谢你的帮助 如果常量仅在单个实现文件中使用,则应在其声明前面加上
static
。也就是说,把这个翻过来:
const int kWidth = 150;
为此:
static const int kWidth = 150;
static
关键字告诉编译器此符号仅在当前文件中使用。1如果没有它,编译器将假定您正在声明一个全局变量,可以从最终应用程序中的任何位置访问该变量。声明两个具有相同名称的全局变量不是一个好主意,因为您无法区分它们,因此编译器会正确地抱怨。幸运的是,只需通过static
关键字更明确地表达您的意图,就可以很容易地解决这个问题。
1:更准确地说是“翻译单位”,但就这个问题而言,“文件”就足够了。另一种解决这种情况的方法是“收集”类中的所有常量。这样,您可以更好地了解所有常量名称。缺点是,可以假设这些变量是全局变量,这并不总是值得赞赏的。请发布您的代码。变量是如何声明的<代码>静态?感谢您的回复!我更新我的问题。请看,谢谢!是的,我需要使用静电,谢谢!