如何在头文件中“隐藏”变量?

时间:2012-02-12 16:11:52

标签: c++ c header

头文件包含两个变量。 由于我的程序结构,我有两个“ld:重复符号”错误。 这两个变量只具有局部意义。 有没有办法让这些变量“私有”,所以即使头文件包含在另一个源文件中,也不会在头文件之外看到它们?

编辑:请告诉我,如果我将变量放到cpp文件中会不会很好?这些变量是非常大的数组,在初始化时定义,并占用大量代码......

extern char Lookup[][3] = {  "aa", "ab", "ac", "ad", "ae", "af", ... and so on (really long)}

3 个答案:

答案 0 :(得分:5)

解决方案是不在头文件中定义变量。

如果您绝对必须在内部源文件之间共享变量(我建议您不要这样做),那么您应该执行以下操作:

  1. 创建“internal.h”。
  2. 在该头文件中声明您的变量extern
  3. 在两个内部源文件中包含“internal.h”。
  4. 在一个或其他内部源文件中定义变量。
  5. 现在该变量对外界是隐藏的。 (它可能仍然在您的目标文件中可见,但您可以使用特定于平台的技巧来剥离它。)

答案 1 :(得分:3)

不要在标题中定义变量。

使用extern在标题中声明变量而不定义它。

答案 2 :(得分:0)

我总是对“松散”的变量感到厌倦。我的意思是:他们确实会影响他们不是吗?他们“属于”一个阶级?

你不应该只是在一个类下声明它们,然后将它们声明为静态变量吗? (并且给出了语法,也可能是常量)?在这种情况下,您可以简单地使用通常使用静态变量完成的所有操作(初始化列表,静态初始化函数等)。对我来说更清楚,因为现在你的变量与某些东西联系在一起。