头文件包含两个变量。 由于我的程序结构,我有两个“ld:重复符号”错误。 这两个变量只具有局部意义。 有没有办法让这些变量“私有”,所以即使头文件包含在另一个源文件中,也不会在头文件之外看到它们?
编辑:请告诉我,如果我将变量放到cpp文件中会不会很好?这些变量是非常大的数组,在初始化时定义,并占用大量代码......extern char Lookup[][3] = { "aa", "ab", "ac", "ad", "ae", "af", ... and so on (really long)}
答案 0 :(得分:5)
解决方案是不在头文件中定义变量。
如果您绝对必须在内部源文件之间共享变量(我建议您不要这样做),那么您应该执行以下操作:
extern
。现在该变量对外界是隐藏的。 (它可能仍然在您的目标文件中可见,但您可以使用特定于平台的技巧来剥离它。)
答案 1 :(得分:3)
不要在标题中定义变量。
使用extern
在标题中声明变量而不定义它。
答案 2 :(得分:0)
我总是对“松散”的变量感到厌倦。我的意思是:他们确实会影响他们不是吗?他们“属于”一个阶级?
你不应该只是在一个类下声明它们,然后将它们声明为静态变量吗? (并且给出了语法,也可能是常量)?在这种情况下,您可以简单地使用通常使用静态变量完成的所有操作(初始化列表,静态初始化函数等)。对我来说更清楚,因为现在你的变量与某些东西联系在一起。