有一个项目,其中有几十个 .cpp 文件,它们都必须可以访问 WinAPI 全局变量,为此我分配了一个单独的头文件 globalvariable.h 在某些时候,事实证明这些变量是重复的,并且在 .obj 级别生成错误消息 如何告诉编译器在 globalvariable.h 文件中使用这些变量,而不是通过将它们插入代码来再次创建它们?如何正确创建全局变量,以便它们在所有 .cpp 实现文件中可见?
有一个项目,其中有几十个 .cpp 文件,它们都必须可以访问 WinAPI 全局变量,为此我分配了一个单独的头文件 globalvariable.h 在某些时候,事实证明这些变量是重复的,并且在 .obj 级别生成错误消息 如何告诉编译器在 globalvariable.h 文件中使用这些变量,而不是通过将它们插入代码来再次创建它们?如何正确创建全局变量,以便它们在所有 .cpp 实现文件中可见?
正确的做法是这样的。创建您需要的所有变量,但将它们放在一个 cpp 文件中。并在 h 文件中用
extern. 全部。现在只需将此 h 文件添加到您需要的所有文件中。将它们包装在命名空间中也很好。标题
cpp
现在在正确的地方联系 as
global::data。并且不要忘记将 cpp 文件添加到编译中,然后添加到链接中。
第二种方法是为自己创建一个单例类,它将存储所有这些全局变量。在某些情况下,这可能会明显更好。
第三种方式是没有全局变量。而且不会有任何问题。