c++ 怎么把子函数写在独立文件中?

程序有很多子函数,每个子函数都比较长,不方便写在一个文件中。假定这些子函数是:intfunc1(intvar1,stringstr1),intfunc2(intvar2,... 程序有很多子函数,每个子函数都比较长,不方便写在一个文件中。假定这些子函数是:
int func1(int var1, string str1), int func2(int var2, string str2),...
这里string需要包含#include <string> 并申明 using std::string; 问题是这两句在主函数文件已经有,如果每个都包含的话会重复包含,如果每个都加一个.h头文件的话又太累赘,头文件中就几行。
是不是可以多个子函数文件公用一个头文件? 或者没有头文件,在主函数文件中直接包含所有子函数的cpp文件?

另外,子函数cpp文件一定要有头文件吗?没有头文件的话除了原型申明主函数文件中要包含这个子函数的cpp文件吗?
展开
 我来答
一口没水的枯井
2015-06-26 · TA获得超过2988个赞
知道小有建树答主
回答量:473
采纳率:100%
帮助的人:152万
展开全部

1 可以通过头文件来实现

    具体是把函数的声明写在头文件(.h)里

    函数的定义写在源文件(.cpp)里

    在要使用该函数的源文件中 使用#include  "含有该函数的头文件" 来引入进而使用

2 一个小示例来说明

    该示例包含3个文件,分别是Source.cpp、Funs.h和Funs.cpp

//Source.cpp文件
#include "Funs.h"
#include<stdio.h>

int main(){
    int a = 12, b = 9;
    int c = max(a, 9);

    printf("%d和%d中的最大值为:%d\n", a, b, c);
    getchar();
    return 0;
}
//Funs.h文件

#ifndef  FUNS_H
#define FUNS_H

/*求两个数的最大值函数*/
int max(int, int);

#endif
//Funs.cpp文件

/*求两个数的最大值函数*/
int max(int a, int b){
    return a > b ? a : b;
}

3 运行结果如下

匿名用户
2014-07-07
展开全部
用个头文件比如fun.h,把所有子函数定义这里边,然后其他文件#include“fun.h”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ckpyn
2014-07-07 · TA获得超过2052个赞
知道小有建树答主
回答量:1179
采纳率:85%
帮助的人:379万
展开全部
这个很好解决。
可以把多个子函数写在一个头文件中。
如果子函数引用了string,可以直接在头文件中加上:
#include <string>
using namespace std;
不必在主文件中引用这些头文件。

如果在头文件中申明和定义函数,有两种方法:
1、直接在头文件中申明和定义这些子函数,然后在其它文件中引用头文件,编译时,需要加上相应头文件;
2、在头文件中申明这些子函数,然后在同名的cpp文件中,写这些子函数的定义,同时引用该头文件,使用子函数,只需在相应的cpp文件中引用相应头文件即可,编译时需要加上相应头文件和cpp文件;
注意事项:
1、如果使用头文件中申明的子函数,需要在相应的引用该头文件的cpp文件开头(引用头文件之后),加上引用外部子函数的申明:
extern int func1(int var1, string str1);
extern int func2(int var2, string str2);
......
2、为了防止头文件重复调用出错,需要在头文件开头和结束的地方加上防止重复调用的条件编译开关:
#ifndef XXX_H
#define XXX_H
......
#endif
追问
假如有两个子函数,分别有各自的头文件,这两个头文件都有 #include (实际中可能是一些其他包含文件,#include 只是举例说明) , 这样是不是重复包含,是不是只能在一个头文件中有,子函数多了以后如何如何避免这种情况?
追答
标准头文件已经可以重复调用,如果自己写的头文件,必须加上如下条件编译代码:
#ifndef XXX_H
#define XXX_H
......
#endif
就可以防止因为重复引用造成编译错误

还有,如果main.cpp引用a.h,a.h引用b.h。
则main.cpp中如果用到b.h的内容,就不必再引用b.h了,这便于代码的简洁易读
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-07-07
展开全部
多个子函数文件公用一个头文件就行了。

子函数cpp文件不一定要有头文件。

所有用到函数的文件都必须包含
追问
#include   在主函数文件中有了,或者在主函数包含的一个头文件中包含了,其他子函数(要用到string)的头文件中还要吗?
追答
最简单的顺序你都不懂吗,看主函数包含的顺序啊。
写程序要的是习惯,每个都包含一下又怎么了,我现在每个程序还要写一堆注释呢。嫌麻烦就不要走这一行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-07-07
展开全部
最好还在第一行加一个#pragma once
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式