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

Jak*_*nds 0 c c++ header

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

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

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

Oli*_*rth 5

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

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

  1. 创建一个"internal.h".
  2. extern在该头文件中声明您的变量.
  3. 在内部源文件中包含"internal.h".
  4. 在一个或其他内部源文件中定义变量.

该变量现在对外界是隐藏的.(它可能仍然在您的目标文件中可见,但您可以使用特定于平台的技巧来剥离它.)