visual studio 2012 - c++全局变量在多个文件
visual studio 2012 - C++ global variable in multiple files
我有一个类Button,它包括一个类ButtonManager,它管理按钮。
然后我有两个功能来处理事情,一个是像登录窗口有几个按钮,第二个是游戏菜单本身,它也有按钮。
然而,这两个窗口占用了相当多的行,所以我决定将其拆分为多个.cpp文件,在那里我只调用main.
中的内容。问题是,我需要在.cpps中包括按钮类,主cpp和辅助cpp还包括一些dummy.h
,其中包含渲染菜单的公共函数的声明。
主要问题是,ButtonManager有一个全局变量,当编译时,它说符号已经定义。
示例代码:
a.h(就像它是按钮管理器头文件一样):
#ifndef _ABC_
#define _ABC_
struct A{
int b;
}a = A();
#endif
side.h(假设这是游戏主窗口):
#ifndef _SIDE_H_
#define _SIDE_H_
int callSomething();
#endif //_SIDE_H_:
side.cpp:
#include "side.h"
#include "abc.h"
#include <iostream>
int callSomething()
{
std::cout << a.b << "n";
return a.b;
}
main.cpp:
#include "abc.h"
#include "side.h"
#include <iostream>
int main()
{
callSomething();
std::cin.get();
}
当我试图编译它时,编译器报错:
1>side.obj : error LNK2005: "struct A a" (?a@@3UA@@A) already defined in DynamicDispatch.obj
1>H:Microsoft Visual Studio 11.0exampleDebugdynamicdispatch.exe : fatal error LNK1169: one or more multiply defined symbols found
感谢所有帮助
在a.h
中声明变量为
struct A{
int b;
};
extern struct A a;
然后在main.cpp中定义一次:
struct A a;
int main()
{
//...
}
相关文章:
- 在 elf 文件中查找全局变量的位置
- 访问另一个.cpp文件中的.cpp文件中定义的全局变量
- 在主循环外部多个文件上定义全局变量
- 查找声明全局变量的文件
- 通过其他文件中的另一个全局变量使用类的全局实例
- 如何管理多个文件、全局变量和定义
- C 使用c库,其中包含标题文件中定义的全局变量
- 如何在可执行文件中从.so访问全局变量
- cpp 文件中的全局变量
- 在blackberry cascades 10中访问多个qml文件中的全局变量
- 将所有常用的全局变量移到一个头文件中,以减少#includes的数量,这是一种好的做法吗
- 是头文件全局作用域中的变量
- 如何使用在源文件内的头文件中声明的全局变量
- 生成文件:在全局变量初始化之前通过"make all"命令运行 bash 脚本
- 跨多个文件的c++全局变量
- 包含文件会导致全局变量出现多个定义错误
- 如何创建一个具有全局变量的 lib 文件,这些全局变量应该将其信息共享给另一个项目
- 跨多个.cpp文件共享全局变量(visual studio 2015)
- 在头文件中包含全局变量
- 如何声明和定义全局变量,以便从所有头文件/源文件中正确访问它们