何时使用包括防护装置或 #pragma 一次C++

When to use include guards or #pragma once C++

本文关键字:#pragma 一次 C++ 装置 包括防 何时使      更新时间:2023-10-16
在每个

头文件中使用您选择的包含保护和#pragma once,还是仅使用带有类声明之类的内容?

我很想把它放在每个标题中,但我担心它是不必要的,只会增加编译时间。什么是良好做法或常见做法?

让我澄清一下:我理解两者之间的区别。我问的是,根据经验,程序员是在每个文件中使用它,还是只在那些需要它的文件中使用它。

总结 Galik 的评论和我意识到的:

包括守卫应该放在每个头文件中,以防将来发生冲突。此外,编译器处理包含保护所需的时间很短,这将使编译更快,因为不需要处理额外的标头。

#pragma once是特定于编译器的,而正常的包括保护定义,应该适用于任何C ++预处理器。

因此,为了便于携带,始终坚持"你们好老"包括警卫成语。

使用包含保护对于防止代码中的多个符号声明错误至关重要。你不应该为假设或影响而烦恼,c++预处理器如何处理这个问题(现代的预处理器经过优化,可以有效地做到这一点)。

如果您希望代码可移植到所有C++编译器,则需要使用包含保护。如果你觉得你使用的编译器较差,并且受益于使用#pragma once你也可以添加这个编译指示:编译器不理解它只会忽略它。就个人而言,我不介意使用#pragma once.这是一个不存在的问题的解决方案:编译器绝对可以检测包含保护,以避免打开已经包含的文件。