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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了引用自定义头文件时时出错相关的知识,希望对你有一定的参考价值。

编译器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语言....

不是编译器问题,你的文件结构有问题,不要include "*.c". 你最好建一个.c文件和一个同名的.h文件。在H文件里只声明不实现,在C文件里实现。你的主C文件和其它C文件都要include ”H文件“。最后把你的其它C文件也加入VS工程里边。H文件不需要加。如果你以后想做成一个闭源的模块,真生成库文件,删掉C文件就可以了。 参考技术A 应该是重复引用了

MPLAB IDE中,怎么把引用头文件的路径改成自定义的

我自己写了个.h的头文件放在工程目录里添加进去,没用
一定要加到软件原先默认的地方才行
但是这样以后程序文件要整体复制出来不方便
怎么该引用头文件的路径?

参考技术A 用 #include <filename.h> 格式来引用标准库的头文件(编译器将从
标准库目录开始搜索)。
用 #include “filename.h” 格式来引用非标准库的头文件(编译器将
从用户的工作目录开始搜索)。

C++/C 头文件的结构
// 版权和版本声明见
#ifndef GRAPHICS_H // 防止graphics.h 被重复引用
#define GRAPHICS_H
#include <math.h> // 引用标准库的头文件

#include “myheader.h” // 引用非标准库的头文件

void Function1(…); // 全局函数声明

class Box // 类结构声明


;
#endif

如果还不行,就换一个PICC。本回答被提问者采纳

以上是关于引用自定义头文件时时出错的主要内容,如果未能解决你的问题,请参考以下文章

C语言怎么把自定义头文件添加到函数库中

C语言含有包含自定义头文件的程序怎么编译?

如何让linux-gcc找到自定义的头文件

在 View Controller 中引用自定义视图时出错

c# webService 自定义soap头??急急急

C语言中include““与include<>的区别(自定义头文件预设头文件)