引用自定义头文件时时出错

编译器VS2010头文件内容:externintadd(intnum1,intnum2){return(num1+num2);}externintsub(intnum1,... 编译器VS2010

头文件内容:
extern int add(int num1,int num2){
return (num1+num2);}
extern int sub(int num1,int num2){
return (num1-num2);}
extern int mul(int num1,int num2){
return (num1*num2);}
extern int dvd(int num1,int num2){
return (num1/num2);}

源文件内容:
#include <stdio.h>
#include "h.c"

int main(void)
{
int a,b,res;
int (*ptr)(int,int);
char ch;
printf("input:");
scanf("%d%c%d",&a,&ch,&b);
switch(ch)
{
case '+':ptr=add; break;
case '-':ptr=sub; break;
case '*':ptr=mul; break;
case '/':ptr=dvd; break;
default:printf("error!\n");return 0;
}
res=(*ptr)(a,b);
printf("%d%c%d's resual=%d\n",a,ch,b,res);
return 0;
}

提示:
1>z.obj : error LNK2005: _add 已经在 h.obj 中定义
1>z.obj : error LNK2005: _sub 已经在 h.obj 中定义
1>z.obj : error LNK2005: _mul 已经在 h.obj 中定义
1>z.obj : error LNK2005: _dvd 已经在 h.obj 中定义

不知是编译器问题还是代码问题....
C语言....
展开
 我来答
forzore
2015-07-24
知道答主
回答量:6
采纳率:0%
帮助的人:4.1万
展开全部
不是编译器问题,你的文件结构有问题,不要include "*.c". 你最好建一个.c文件和一个同名的.h文件。在H文件里只声明不实现,在C文件里实现。你的主C文件和其它C文件都要include ”H文件“。最后把你的其它C文件也加入VS工程里边。H文件不需要加。如果你以后想做成一个闭源的模块,真生成库文件,删掉C文件就可以了。
糖袋里de小白
2015-07-07 · 超过15用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:17.3万
展开全部
应该是重复引用了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式