当前位置:  技术问答>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头文件使用

#ifndef
#define
......
#endif

了吗?

|
//queue.h

#ifndef __QUEUE_H__
#define __QUEUE_H__

//具体写义写这儿

#endif
然后两个cpp都include queue.h文件

|
根本原因是你没有宏
#ifndef __QUEUE_H__
#define __QUEUE_H__

#endif

如果你不些这个那么你在别的多个文件中要是都用 #include“ ” ,那么必然要从定义,

|
/** queue.h */
#ifndef __QUEUE__
#define __QUEUE__

//--此处写Queue的定义--

#endif

两个cpp都include queue.h文件

|
** queue.h */
#ifndef __QUEUE__
#define __QUEUE__

//--此处写Queue的定义--

#endif

这样定义是不行的, C++里最是定义为静态的, C里用extern

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • tar 的目标文件和源文件均在磁盘上,执行tar之后,用access判断目标文件是否存在,不一定会成功。
  • 别人写的包中的文件(源文件和class文件)要在jbuilder下导入应该分别放在jbuilder下的什么目录?
  • Apache Tomcat 4.0如何把源文件生成servlet的class文件?
  • 共享库 头文件 源文件
  • enigma-i386-disc1 这个是安装文件还是源文件?
  • 如何运行包含两个文件的源文件?"引用"是什么概念?
  • ubuntu下的.cpp,.h文件没法保存中文(从xp下面复制过来的源文件)
  • 如何用kimage工具从 映象文件ramdisk 还原出 源文件ramdisk.image.gz
  • linux下编译简单的c++/c源文件时,出现找不到包含文件?
  • gdb调试,可执行文件和 源文件不在同一个目录怎么办?
  • 求几个完整的Java程序,什么内容的程序都行,要包含工程文件和全部源文件,主要用于学习,发者就给分。
  • gdb 如何加载源文件调试
  • 如何整理不规范的java源文件?
  • Proc源文件长度
  • 一個自動從服務器 FTP文件到 本機的shell 代碼,執行後源文件大小變成 "0",我哭,為何?
  • 在vs2010中,输出当前文件路径与源文件当前行号的解决方法
  • 关于用gcc(g++) 编译其它扩展名(比如hpp)的合法的源文件??
  • Java源文件比较工具 DiffJ
  • PHP源文件加密工具 PHP Screw
  • 在哪里可以找到linux源文件?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3