新年散分!!!!学习

giant7 2009-01-01 09:00:44
在".h"文件中定义了初始化的全局变量:
int a[100]; // 用来存放编码的数组
int maxsize(0); // 用来记录编码的长度
static int count; // 用来记录字符的长度
int number(0); //存放字符串的长度

这些均只在".cpp"文件中用到:
可编译时出现如下的:

huffman.obj : error LNK2005: "int __cdecl len(char * const)" (?len@@YAHQAD@Z) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "public: __thiscall hufftree::hufftree(void)" (??0hufftree@@QAE@XZ) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "public: void __thiscall hufftree::Insert(int,char)" (?Insert@hufftree@@QAEXHD@Z) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "public: void __thiscall hufftree::connect(class huffnode *)" (?connect@hufftree@@QAEXPAVhuffnode@@@Z) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "public: class huffnode * __thiscall hufftree::Min(void)" (?Min@hufftree@@QAEPAVhuffnode@@XZ) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "public: void __thiscall hufftree::Frequence(char * const)" (?Frequence@hufftree@@QAEXQAD@Z) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "public: void __thiscall hufftree::Sethufftree(void)" (?Sethufftree@hufftree@@QAEXXZ) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "public: void __thiscall hufftree::Inorder(class huffnode *)" (?Inorder@hufftree@@QAEXPAVhuffnode@@@Z) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "public: void __thiscall hufftree::output(void)" (?output@hufftree@@QAEXXZ) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "public: void __thiscall hufftree::delet(class huffnode *)" (?delet@hufftree@@QAEXPAVhuffnode@@@Z) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "public: void __thiscall hufftree::huffcode(void)" (?huffcode@hufftree@@QAEXXZ) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "public: void __thiscall hufftree::outputcode(void)" (?outputcode@hufftree@@QAEXXZ) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "public: void __thiscall hufftree::sortcode(void)" (?sortcode@hufftree@@QAEXXZ) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "public: void __thiscall hufftree::Incode(char * const)" (?Incode@hufftree@@QAEXQAD@Z) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "public: void __thiscall hufftree::transcode(void)" (?transcode@hufftree@@QAEXXZ) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "int number" (?number@@3HA) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "int maxsize" (?maxsize@@3HA) already defined in huffmanmain.obj
huffman.obj : error LNK2005: "int * a" (?a@@3PAHA) already defined in huffmanmain.obj
Debug/huffman.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.

上面显示的是:我”。cpp“文件中的成员函数与这些全局变量均被在主函数中被重复定义,可我没有呀
在".h"文件中用了”#pragma once“也不行,请高手帮忙!!!
...全文
105 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
xianyuxiaoqiang 2009-01-02
  • 打赏
  • 举报
回复
老问题,头文件没做好
china_west 2009-01-02
  • 打赏
  • 举报
回复
jf
zhouqing19871024 2009-01-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fox000002 的回复:]
多处包含了该头文件了吧

变量和函数的定义尽量不要写在头文件里

头文件中声明,在另外的源文件里定义




C/C++ code// global.h
extern int g_xxx;

void foo();

// global.cpp

int g_xxx = 1;


void foo()
{}
[/Quote]

是这样的,我以前也遇到过这样的问题,3楼正解
ashifa 2009-01-02
  • 打赏
  • 举报
回复
up
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 chenfeng2002 的回复:]
头文件里添加
#ifndef xxxx_H
#define xxxx_H
.
.
.
#endif

避免头文件重复被引用
[/Quote]

就是这个问题了。
chenfeng2002 2009-01-02
  • 打赏
  • 举报
回复
头文件里添加
#ifndef xxxx_H
#define xxxx_H
.
.
.
#endif

避免头文件重复被引用
jl443960770 2009-01-02
  • 打赏
  • 举报
回复
jf
jintianfree 2009-01-02
  • 打赏
  • 举报
回复
迷惑中...帮顶...
CA_HA_M 2009-01-02
  • 打赏
  • 举报
回复
问题?散分?
jintianfree 2009-01-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dqlihb 的回复:]
这个散分有意思
[/Quote]

.
gl615 2009-01-02
  • 打赏
  • 举报
回复
up...........
roadblossom 2009-01-02
  • 打赏
  • 举报
回复
up
wwf06802136 2009-01-01
  • 打赏
  • 举报
回复
up
P_ghost 2009-01-01
  • 打赏
  • 举报
回复
只管接分,问题已经在另外帖子里说过了!
dqlihb 2009-01-01
  • 打赏
  • 举报
回复
这个散分有意思
waizqfor 2009-01-01
  • 打赏
  • 举报
回复
UP下
Cpp权哥 2009-01-01
  • 打赏
  • 举报
回复
把全局变量定义在一个.cpp文件中,而在.h文件中把那些全局变量定义的最前面都加上extern变成声明。
as11qwer 2009-01-01
  • 打赏
  • 举报
回复
UP,分
fox000002 2009-01-01
  • 打赏
  • 举报
回复
多处包含了该头文件了吧

变量和函数的定义尽量不要写在头文件里

头文件中声明,在另外的源文件里定义



// global.h
extern int g_xxx;

void foo();

// global.cpp

int g_xxx = 1;

void foo()
{}
xiaoyisnail 2009-01-01
  • 打赏
  • 举报
回复
up
加载更多回复(1)

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧