R.M*_*.M. 5 gcc include-guards header-files
我一直在玩gcc的-H选项,它打印出有关C和C ++编译中直接和间接包含的信息(gcc手册的相关部分)。
作为输出的一部分,有一个部分“多个包含保护可能对:有用”,其中列出了许多项目和系统头。
这是什么意思,如何确定此列表,以及为什么说“多个”包含防护可能有用?
(我熟悉包含防护的一般概念,以及为什么要使用它们-我正在寻找有关此消息的详细信息,以及这对我的项目意味着什么。)
在这种情况下,“multiple”修饰的是“includes”——而不是“guards”。所以“包含守卫”和“多个包含守卫”是同一件事。也就是说,它们防止同一文件的多次包含。
该列表的制作方式大致如下:首先,所有文件都被考虑用于该列表。但主文件除外;以及具有包含保护的文件;#import用;打开的文件 以及具有#pragma once.
使用防护的原因是它们使头文件具有幂等性,并且可以减少编译时间。IMO 它们是 C 和 C++ 的最佳实践。