您的位置:首页

一点收获

2017-01-01 15:58 120 查看
1、关于#ifndef #define #endif (http://blog.csdn.net/abc5382334/article/details/18052757)感谢这位。

想必很多人都看过“头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用”。但是是否能理解“被重复引用”是什么意思?

是不能在不同的两个文件中使用include来包含这个头文件吗?如果头文件被重复引用了,会产生什么后果?

是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码?

其实“被重复引用”是指一个头文件在同一个cpp文件中被include了多次,这种错误常常是由于include嵌套造成的。比如:存在a.h文件#include "c.h"而此时b.cpp文件导入了#include "a.h" 和#include "c.h"此时就会造成[b]c.h重复引用。[/b]

头文件被重复引用引起的后果:

有些头文件重复[b]引用只是增加了编译工作的工作量,不会引起太大的问题,仅仅是编译效率低一些,但是对于大工程而言编译效率低下那将是一件多么痛苦的事情。
有些头文件重复包含,会引起错误,比如在头文件中定义了全局变量(虽然这种方式不被推荐,但确实是C规范允许的)这种会引起重复定义。[/b]

下面给一个#ifndef/#define/#endif的格式:

#ifndef A_H意思是"if not define a.h" 如果不存在a.h

接着的语句应该#define A_H 就引入a.h

最后一句应该写#endif 否则不需要引入。

一般用在.h文件中,里面都是宏定义。

注意定义的时候需要大写,点号用下划线代替。

2、关于份文件编写时的‘.h’和‘.c’文件

这样做目的是为了实现软件的模块化
使软件结构清晰,而且也便于别人使用你写的程序

纯粹用 C 语言语法的角度,你当然可以在 .h 中放任何东西,因为 #include 完全等价 于把 .h 文件 Ctrl-C Ctrl-V 到 .c 中

.h 中应该都是一些宏定义和变量、函数声明,告诉别人你的程序“能干什么、该怎么用”
.c 中是所有变量和函数的定义,告诉计算机你的程序“该怎么实现”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: