C语言里,我想用一个.h文件去做多个.c的header

貌似一个header文件只能做一个.c文件的header我想请教一下能不能一个header文件里面包含了多个.c的函数呢?例如//mainfn.c#include<std... 貌似一个header文件只能做一个.c文件的header
我想请教一下能不能一个header文件里面包含了多个.c的函数呢?
例如
//mainfn.c
#include <stdio.h>
#include "foo.h"

int main ()
{
printf("2 + 3 is %d\n", add(2,3));

printf("2 X 3 is %d\n", mult(2,3));

}

------------------------------
//foo.h

#ifndef FOO_H
#define FOO_H

int add (int a, int b);
int mult (int a, int b);

#endif

-------------------------------
//add.c

#include "foo.h"

int add (int a, int b)
{
return a + b;
}

--------------------------------
//mult.c

#include "foo.h"

int mult (int a, int b)
{
return a * b;
}
报错如下:

Running tool: RunC

Running test.c failed because the implementation of the foo module is missing

Exited: 256

貌似foo.h只能做foo.c的header
展开
 我来答
linnjing
推荐于2016-03-19 · TA获得超过2632个赞
知道大有可为答主
回答量:1230
采纳率:91%
帮助的人:520万
展开全部
这种做法没有问题,你的理解正好是反的。你有这种想法可能被是教科书误导了。
事实上这是一种很经典的做法,把公共的声明、宏定义放在公共的头文件中,然后让所有要使用这些声明、宏定义的c文件都包含这个公共的头文件。
最后提醒你注意,不要在头文件中放可以产生空间占用的语句,代码和变量定义都不行。如果以后组织头文件的过程中出问题,可以回过头来看看有没有这个问题。

列出的错误是因为链接程序找不到foo这个模块,把三个c文件组织成项目,并设置好包含路径,再试试。
追问
我的C貌似没这个功能 : (  只能编辑 编译运行... 很烂- -

...... 我发现只要foo.h里面的声明不在foo.c这个特定名字的文件里的时候, 就算之后其他c文件包含了这个foo.c, 他也不会被运行

是不是C++可以这么用C不行诶?
追答
不知道你用的是什么系统。通常C语言的编译与链接是两个独立的程序,C++也是这样。
但有的个别编译器在进行单个文件编译的时候,会自动调用链接程序,Borland C就是这样。
当各个函数分处于不同的源文件中,每个文件需要分别编译,编译程序执行的结果是生成OBJ文件。把所有这些OBJ文件用链接程序“合”起来,才能得到可执行文件。
feng791161665
2014-05-22 · 超过28用户采纳过TA的回答
知道答主
回答量:89
采纳率:0%
帮助的人:31.4万
展开全部
这样写是决对可以的。可能是你没有添加mult.c,add.c到工程。
还有FOO。H这样写。
//foo.h

#ifndef FOO_H
#define FOO_H
#endif

int add (int a, int b);
int mult (int a, int b);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阿拉武侠
2014-05-22 · 超过34用户采纳过TA的回答
知道答主
回答量:184
采纳率:100%
帮助的人:67.6万
展开全部
可以实现。在xxx.c文件中直接#include“XX.h”,就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小飞号R
2014-05-22 · 超过21用户采纳过TA的回答
知道答主
回答量:137
采纳率:0%
帮助的人:69.1万
展开全部
将.h文件包含就可以了
追问
额... 包含了的, 在那个mainfn.c里面, 他说foo.h里面的implementation is missing
追答
我有将一个头文件在每个cpp里面都包含的,可以用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
千博超4Y
2014-05-22
知道答主
回答量:22
采纳率:0%
帮助的人:3.7万
展开全部
h调用c文件的时候,会有重定义的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式