Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在objective-c中使用常量。重复符号问题_Objective C - Fatal编程技术网

在objective-c中使用常量。重复符号问题

在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... 谢谢你的帮助 如果常量仅在单个实现文件中

我有两个带常数的类

例如,有一个名为class_a.m的类包含一个常数
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:更准确地说是“翻译单位”,但就这个问题而言,“文件”就足够了。

另一种解决这种情况的方法是“收集”类中的所有常量。这样,您可以更好地了解所有常量名称。缺点是,可以假设这些变量是全局变量,这并不总是值得赞赏的。

请发布您的代码。变量是如何声明的<代码>静态?感谢您的回复!我更新我的问题。请看,谢谢!是的,我需要使用静电,谢谢!