一个头文件可以包含另一头文件吗?

一个头文件可以包含另一头文件吗?,第1张

这是个风格问题, 因此有不少的争论。很多人认为“嵌套包含文件”应该避免:盛名远播的“印第安山风格指南”(Indian Hill Style Guide) 对此嗤之以鼻它让相关定义更难找到如果一个文件被包含了两次, 它会导致重复定义错误同时他会令 makefile 的人工维护十分困难。另一方面, 它使模块化使用头文件成为一种可能 (一个头文件可以包含它所需要的一切, 而不是让每个源文件都包含需要的头文件)类似 grep 的工具 (或 tags 文件) 使搜索定义十分容易, 无论它在哪里一种流行的头文件定义技巧是:

#ifndef HFILENAME_USED

#define HFILENAME_USED

... 头文件内容 ...

#endif

每一个头文件都使用了一个独一无二的宏名。这令头文件可自识别,以便可以安全的多次包含而自动 Makefile 维护工具 (无论如何, 在大型项目中都是必不可少的) 可以很容易的处理嵌套包含文件的依赖问题。

相同点:

头文件与源代码都是源文件,都用纯文本文件存储,都需要遵照C/C++语言规范来写,都可以使用类型定义和常、变量定义,都可以包含函数的声明和实现,都能包含宏定义,都使用相同的调用规范。

不同点:

C/C++的编译器规定源代码文件必须包含函数入口,即main函数,或者winmain函数。而头文件不得包含函数入口,也就是说,头文件不可以单独编译成一个程序,仅仅包含程序片断或者仅仅定义常、变量。

关联:

头文件是专为源代码调用而写的静态包含文件,可被源代码文件中的#include编译预处理指令解释,而将头文件完整拷贝到源代码的指令处,从而在编译时相当于在源代码中插入了函数声明或者实现。

某些头文件包含了静态库中的函数调用声明,包含了LIB文件的调用信息,编译时静态链接进程序;而某些头文件是专为方便API调用而写的,里面包含了动态链接库的调用信息和规范,只有在运行时将DLL载入内存提取函数执行。

也就是说,其实你将头文件里的信息完全写到源代码里,是可以实现完全相同的功能的。如果你想要学写头文件,可以参照标准C/C++库的h文件。

可以的!头文件可以嵌套使用,但是为了防止重复编译,请使用如下语句来防止(假如头文件为inc.h):

#ifndef _inc

#define _inc

以下为头文件内容

#endif

你好,这些都是在头文件里面定义的!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12078616.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存