vc++用法,怎样包含头文件

我定义了三个函数function1()、function2()、function3()和一个头文件stack.h和一个主函数sourcemain。每个function函数... 我定义了三个函数function1()、function2()、function3()和一个头文件stack.h和一个主函数sourcemain。每个function函数单独一个.cpp文件。并且三个函数都用到了头文件stack.h。
那我在写每个function函数的头的时候都写上#include "stack.h"这个头吗,并且我在main函数中也把这个stack.h头文件加进来了。编译时通过了,但链接失败,显示
function1.obj : error LNK2005: "int __cdecl InitStack(struct SqStack &)" already defined in sourcemain.obj
function1.obj : error LNK2005: "int __cdecl GetTop(struct SqStack,int &)" already defined in sourcemain.obj
function1.obj : error LNK2005: "int __cdecl Push(struct SqStack &,int)" already defined in sourcemain.obj
function2.obj : error LNK2005: "bool __cdecl StackEmpty(struct SqStack &)" (?StackEmpty@@YA_NAAUSqStack@@@Z) already defined in sourcemain.obj
function2.obj : error LNK2005: "int __cdecl InitStack((?already defined in sourcemain.obj
……
上面的InitStack,GetTop等都是我定义的栈中的具体操作,sourcemain是我的主函数,到底在三个function函数的头部怎么写才行啊?或者具体该怎么改啊?
在主函数中都调用了那三个function函数啊,分别是用来实现不同进制之间的转换的(利用头文件中定义的栈),
头文件栈的定义中我写了
#ifndef _STACK_H_
#define _STACK_H_
……//栈的实现及操作
#endif 还是链接错误啊

那三个文件分别在三个不同的cpp文件里,在主函数中去调用它们,三个函数名在主函数的头部已经声明了,编译通过了,链接不过
stdafx.h是什么啊,我没有定义stdafx.h这个头文件啊!
展开
 我来答
315856512
2010-12-22 · 超过42用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:105万
展开全部
你这是重复定义的问题,头文件并不参加编译,所以你能通过编译,但是连接器会展开头文件,这时就出问题了;
首先主函数中包含了头文件,里面定义了一些InitStack,GetTop等数据,在打开cpp文件时,又展开这个头文件,再次定义,所以出现重复定义的问题;
解决办法:
增加一个头文件extern.h
将你的头文件里面的内容复制进去,只是有一点,复制进去后,将所有声明的函数 变量前加上 extern 表示在其他地方声明了,而类和结构体不用加,因为类和结构体不存在重复定义问题;
接下来,在主函数cpp文件中包含你的头文件,在其他三个cpp文件中包含 extern.h文件
zab20021
2010-12-21 · TA获得超过124个赞
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:122万
展开全部
那几个函数CPP干什么用了?没看到你用啊
这个估计你是重复包含头文件了
应该stack.h 头部写上类似下边这种东西。
#ifndef _STACK_H_
#define _STACK_H_

#endif
------------------------------------
那3个函数的声明在哪里?是不是也在哪个头文件里?如果是也像之前说的那样加个别的名字的东西,防止重复包含头文件。。别的文件怎么调用这3个函数的?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rzsys
2010-12-21
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
可以试试以下步骤:
1、将那三个函数包含语句(#include "stack.h")迁到CPP文件中
2、再将他们各自的头文件中添加一个结构体声明(struct SqStack;)应该就可以了吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我不知道啊O
2010-12-22 · TA获得超过206个赞
知道小有建树答主
回答量:296
采纳率:0%
帮助的人:135万
展开全部
每个CPP都要加上
#include "stdafx.h"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式