本文将演示如何在 C 语言中使用 避免重入包含的多种方法。
C 语言中的头文件用于定义同名源文件中实现的函数的接口。接口通常包括函数原型、公开访问的数据结构的定义以及其他一些杂项。
注意,头文件可能会多次包含在源文件中,导致编译器出错。通常情况下,用 预处理器指令可以防止这种情况发生,这个指令叫做包装器 。当头文件的内容被封装成如下例所示的结构时,其中指令 是起点, 是终点。 指令检查是否定义了 宏,如果没有则继续,用下一个指令定义。如果用户第二次包含相同的头, 指令将评估为 false,并忽略 指令之前的代码。因此,编译器将只从这个头文件中得到一份代码,并成功编译。
另一种达到同样效果的方法是在头文件中包含 指令。预处理器只对这些头文件扫描一次,并保证不被再次读取。下面的方法有一个缺点,就是它在不同的预处理器之间的可移植性很低,所以大家不妨坚持使用包装器 方法,以保证代码库有更好的灵活性。
另外,我们也可以使用 指令检查给定的宏表达式是否已经被定义。逻辑工作原理和上一个例子完全一样,如果表达式没有被定义,下一个 指令就会进行相应的处理。 和 之间只有一行是一个宏定义,这意味着如果条件为假,只跳过给定的宏定义。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/1204.html