搜档网
当前位置:搜档网 › 研学论坛 - 【分享】C,C++使用头文件的原因及注意事项#158372

研学论坛 - 【分享】C,C++使用头文件的原因及注意事项#158372

研学论坛 - 【分享】C,C++使用头文件的原因及注意事项#158372

帮助 | 搜索 | 个人属性 | 注销 | 标记已读 | 我的论坛 | 排行榜 | 发帖统计


» 研学论坛 » C,C++,C# » C/C++ 基础

打印话题 寄给朋友 订阅主题

作者【分享】C,C++使用头文件的原因及注意事项
xtulbd1



论坛游民

发贴: 59
技术分: 1
积分:77
于 2005-03-03 18:47

C,C++使用头文件的原因及注意事项
--------------------------------------------------------------------------------
1、原理
同一名字的具有外部存储类型的声明,可以在多个源文件中被引用,因此方便的方法是将它们
放在头文件中。头文件起着源文件之间接口的作用。
2、使用建议
头文件一般可包含:
常量定义,如const float pi=3.14;
变量声明,如extern int m; extern int a[];
函数声明,如extern int fn(char s);
类联函数定义,如inline char fn(char *p){return *p;}
类型声明,如struct BTNode{char data; BTNode *left,*right;};
包含指令,如#include "xtu\index.h"
宏定义,如#define PI 3.1415926
类声明,如class Db{......};
头文件不宜包含:
变量定义,如int a; int b[5];
函数定义,如char fn(char *p){return *p;}
常量聚集定义,如const int c[]={1,2,3};
3、疑问
1)、C++如何保证一个头文件仅被一个源文件包含一次?
答:设头文件为func.h,则func.h如下:
#if !define(AFX_FUNC_H__X..X__INCLUDED_)
#define AFX_FUNC_H__X..X__INCLUDED_
......
#endif
2)、头文件中声明类,为什么不在头文件中
a、初始化成员变量;
b、初始化成员常量;
c、初始化静态成员变量;
d、初始化构造函数;
e、初始化非内联成员函数?
答:由于上述操作对象均具全局性,若类定义头文件被一个源文件包含多次的话,
将引起变量或常量或函数重定义的错误(一个编译单元中包含重定义的变量或常量或函数)。



作者Re:【分享】C,C++使用头文件的原因及注意事项 [Re:xtulbd1]
qianxunboy



论坛游民

发贴: 2
技术分: 0
积分:2
于 2005-03-09 18:37

多谢



作者Re:【分享】C,C++使用头文件的原因及注意事项 [Re:xtulbd1]
dionysus_yan



论坛游民

发贴: 13
技术分: 0
积分:14
于 2005-03-24 15:12

”3、疑问
1)、C++如何保证一个头文件仅被一个源文件包含一次?
答:设头文件为fu

nc.h,则func.h如下:
#if !define(AFX_FUNC_H__X..X__INCLUDED_)
#define AFX_FUNC_H__X..X__INCLUDED_
......
#endif“
楼主,这个我还是不太明白,请详细地说一下好么?



作者Re:【分享】C,C++使用头文件的原因及注意事项 [Re:xtulbd1]
b10b



论坛游民

发贴: 1
技术分: 0
积分:1
于 2005-03-24 21:46

回楼上...
#if就是判断是否已包含同名.h
如果!define则可include "func.h"

如果还看不懂,就............



作者Re:【分享】C,C++使用头文件的原因及注意事项 [Re:xtulbd1]
xianweizhu



论坛游民

发贴: 2
技术分: 0
积分:2
于 2005-03-28 10:14

多谢楼主了



作者Re:【分享】C,C++使用头文件的原因及注意事项 [Re:xtulbd1]
zhuqy



论坛游民

发贴: 5
技术分: 0
积分:5
于 2005-03-31 13:33

现在还不是太懂!!



作者Re:【分享】C,C++使用头文件的原因及注意事项 [Re:xtulbd1]
myheart356



版主

发贴: 753
技术分: 126
积分:912
于 2005-03-31 16:50

谭好强的 C语言 条件编译(宏)那一部分再好好看看




simonjp@https://www.sodocs.net/doc/0f16027321.html, 贾鹏
msn:Myheart356@https://www.sodocs.net/doc/0f16027321.html,
孔子东游,遇二小儿辩斗,问其故。一小儿曰:我以日本生自山东,故属东。
一小儿曰:夕阳西下,日本归山西也明矣,是以属西。 孔子不能决,后以问老子(就是我)。 老子笑曰:孰为汝多知乎?日本无根基,岂能算东西 !!




快速回复
标题
内容


HTML标记
笑脸标记
Jute标记
图片标记




选项Email通知:如果有回复就通知您
禁止在这个帖子中使用 Jute 标记
禁止在这个帖子中使用笑脸标记
显示个人签名
加密此帖,只对部分用户可见,用户技术分需大于
0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
论坛技术分统计


已读帖子
新的帖子
被删除的帖子



返回研学论坛首页 返回网站首页

广告服务 | 隐私政策 | 联系我们 | 设为首页

Powered by Powerful JuteForum® Version Jute 1.5.1 Ent
Copyright© 2002-2003 研学论坛 All Rights Reserved.

相关主题