当前位置: 技术问答>linux和unix
不同C++源文件中共享同一个全局变量
来源: 互联网 发布时间:2015-09-04
本文导语: 各位好。 我现在编写一个如下结构的程序: queue.h - 队列类(Queue)对象的定义以及实现 在file1.cpp中定义Queue object(全局变量) 在file2.cpp中定义extern Queue object main.cpp-主程序 现在如果在file1.cpp file2.cpp文件中i...
各位好。
我现在编写一个如下结构的程序:
queue.h - 队列类(Queue)对象的定义以及实现
在file1.cpp中定义Queue object(全局变量)
在file2.cpp中定义extern Queue object
main.cpp-主程序
现在如果在file1.cpp file2.cpp文件中include Queue类的头文件,则用g++编译出现Queue的重复定义,如果只在file1.cpp中include Queue的头文件,则编译时出现file2.cpp文件中Queue是没有定义的类型。
我现在想在不同文件中共享全局变量,请教各位应该如何实现?(对系统类型,比如int,可以实现,就是用户自定义的类型不能跨文件共享)
我现在编写一个如下结构的程序:
queue.h - 队列类(Queue)对象的定义以及实现
在file1.cpp中定义Queue object(全局变量)
在file2.cpp中定义extern Queue object
main.cpp-主程序
现在如果在file1.cpp file2.cpp文件中include Queue类的头文件,则用g++编译出现Queue的重复定义,如果只在file1.cpp中include Queue的头文件,则编译时出现file2.cpp文件中Queue是没有定义的类型。
我现在想在不同文件中共享全局变量,请教各位应该如何实现?(对系统类型,比如int,可以实现,就是用户自定义的类型不能跨文件共享)
|
你的Queue头文件使用
#ifndef
#define
......
#endif
了吗?
#ifndef
#define
......
#endif
了吗?
|
//queue.h
#ifndef __QUEUE_H__
#define __QUEUE_H__
//具体写义写这儿
#endif
然后两个cpp都include queue.h文件
#ifndef __QUEUE_H__
#define __QUEUE_H__
//具体写义写这儿
#endif
然后两个cpp都include queue.h文件
|
根本原因是你没有宏
#ifndef __QUEUE_H__
#define __QUEUE_H__
#endif
如果你不些这个那么你在别的多个文件中要是都用 #include“ ” ,那么必然要从定义,
#ifndef __QUEUE_H__
#define __QUEUE_H__
#endif
如果你不些这个那么你在别的多个文件中要是都用 #include“ ” ,那么必然要从定义,
|
/** queue.h */
#ifndef __QUEUE__
#define __QUEUE__
//--此处写Queue的定义--
#endif
两个cpp都include queue.h文件
#ifndef __QUEUE__
#define __QUEUE__
//--此处写Queue的定义--
#endif
两个cpp都include queue.h文件
|
** queue.h */
#ifndef __QUEUE__
#define __QUEUE__
//--此处写Queue的定义--
#endif
这样定义是不行的, C++里最是定义为静态的, C里用extern
#ifndef __QUEUE__
#define __QUEUE__
//--此处写Queue的定义--
#endif
这样定义是不行的, C++里最是定义为静态的, C里用extern