当前位置:  技术问答>linux和unix

做一个小工程报重复定义错误怎么解决啊?

    来源: 互联网  发布时间:2016-07-17

    本文导语:  连接时报这个错误 /usr/ccs/bin/ld: Duplicate symbol "shm_id" in files bank_console.o and public.o 文件public.h里定义 int shm_id; 文件public.cpp里面定义了函数用到这个变量所以public.cpp中写了#include "public.h" 然后文件bank_console.cpp中...

连接时报这个错误
/usr/ccs/bin/ld: Duplicate symbol "shm_id" in files bank_console.o and public.o

文件public.h里定义
int shm_id;

文件public.cpp里面定义了函数用到这个变量所以public.cpp中写了#include "public.h"

然后文件bank_console.cpp中用到这个变量,在bank_console.h中包含#include "public.h"

g++ -c public.cpp没有问题,编译public.o文件
g++ -c bank_console.cpp也没有问题,编译出bank_console.o文件

可连接的时候
g++ -o bank_console bank_console.o public.o
怎么就报那么多重复定义呢?

正常我把公共函数写到public.cpp里实现,声明在public.h里面。
然后哪个文件用到它就包含这个头文件。
为什么两个文件编译后就连接不了呢?

|
变量定义不能放到头文件里,只能放在源文件里,然后在头文件里用extern int shm_id声明,这样就不会有错了

|
public.cpp

int shm_id;


public.h

extern int shm_id;


|
基本的C语言不过关啊你,
声明放头文件,
变量定义放源文件,
所以
typedef struct node 

    ... 
    ... 
}OPER_NODE; 放在头文件

OPER_NODE* pOper_Node; 放源文件


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












  • 相关文章推荐
  • 安装完jbuilder无法创建工程(在root用户下),如何解决,如何删除安装?
  • 寻找oracle工程师,要绝对高手,现在在广州,解决个问题,有丰厚报酬~
  • android工程下不能运行java main程序的解决方法
  • 过滤Android工程中多余资源文件的解决方法
  • 基于将Android工程做成jar包和资源文件的解决方法
  • VC6.0打开文件以及向工程中添加文件时程序崩溃自动退出解决方法
  • Xcode介绍及创建工程和工程依赖操作步骤
  • 驱动是由硬件工程师写,还是软件工程师写啊
  • 请问Qt的工程文件,如何转成VC的工程文件??
  • JB7中,怎么把一个工程的子FORM及其相关重用到另一个工程中?
  • Android工程:引用另一个Android工程的方法详解
  • 在jbuilder中建立了一个工程,如何新添加一个*.java文件在这个工程中呀?
  • javascript开源软件 iis7站长之家
  • 我在一个Jbuilder工程里,写了很多的javabeans类,在另一个工程里,我想用它们,怎么配置??
  • 智能手机底层驱动工程师和光纤收发器网关开发工程师,哪个更有前途呢?
  • qt4导入qt3工程
  • 求教高手rose对java源程序逆向工程的问题!
  • 怎样做一个系统工程师
  • 请问unix/linux下Cb编程中,是否有工程的概念。
  • 如何编译工程,并使之能运行?
  • 社会工程学工具 Social-Engineering Toolkit
  • Java 反向工程软件 Minjava
  • LINUX工程师级别划分
  •  只有一点JAVA语言基础,但是想先看看关于软件工程方面的东西.可能吗?
  • 分布式工程配置zookeeper化 zkconfigutil
  • 难道JBuilder5的工程名不支持大写?
  • 关于jbuilder工程问题


  • 站内导航:


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

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

    浙ICP备11055608号-3