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文件吗? 展开
int func1(int var1, string str1), int func2(int var2, string str2),...
这里string需要包含#include <string> 并申明 using std::string; 问题是这两句在主函数文件已经有,如果每个都包含的话会重复包含,如果每个都加一个.h头文件的话又太累赘,头文件中就几行。
是不是可以多个子函数文件公用一个头文件? 或者没有头文件,在主函数文件中直接包含所有子函数的cpp文件?
另外,子函数cpp文件一定要有头文件吗?没有头文件的话除了原型申明主函数文件中要包含这个子函数的cpp文件吗? 展开
5个回答
展开全部
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”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个很好解决。
可以把多个子函数写在一个头文件中。
如果子函数引用了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
可以把多个子函数写在一个头文件中。
如果子函数引用了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文件不一定要有头文件。
所有用到函数的文件都必须包含
子函数cpp文件不一定要有头文件。
所有用到函数的文件都必须包含
追问
#include 在主函数文件中有了,或者在主函数包含的一个头文件中包含了,其他子函数(要用到string)的头文件中还要吗?
追答
最简单的顺序你都不懂吗,看主函数包含的顺序啊。
写程序要的是习惯,每个都包含一下又怎么了,我现在每个程序还要写一堆注释呢。嫌麻烦就不要走这一行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-07-07
展开全部
最好还在第一行加一个#pragma once
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询