我一直在使用gcc的-H选项,它打印出有关C和C++编译(relevant section of the gcc manual)中的直接和间接包含的信息。
作为输出的一部分,有一节“多个包含保护可能对:有用“,其中列出了许多项目和系统头文件。
这意味着什么,这个列表是如何确定的,为什么它说 “多个” 包含保护可能是有用的?
(我熟悉include guards的一般概念,以及为什么要使用它们-我正在寻找有关此消息的详细信息,以及它对我的项目意味着什么。
我一直在使用gcc的-H选项,它打印出有关C和C++编译(relevant section of the gcc manual)中的直接和间接包含的信息。
作为输出的一部分,有一节“多个包含保护可能对:有用“,其中列出了许多项目和系统头文件。
这意味着什么,这个列表是如何确定的,为什么它说 “多个” 包含保护可能是有用的?
(我熟悉include guards的一般概念,以及为什么要使用它们-我正在寻找有关此消息的详细信息,以及它对我的项目意味着什么。
1条答案
按热度按时间qyyhg6bp1#
在这种情况下,“multiple”修饰的是“includes”而不是“guards”。所以“include guards”和“multiple include guards”是一回事。也就是说,它们防止同一文件的多个包含。
这个列表大致是这样的:首先,所有的文件都被考虑到列表中。但是,主文件被排除在外;有一个包含保护的文件;用
#import
打开的文件;和有#pragma once
的文件。使用guards的原因是它们使头文件等幂,并且可以减少编译时间。IMO它们是C和C++的最佳实践。