何时使用包含警卫或#pragma一次C++

Mat*_*eld 6 c++ pragma include-guards include

它是使用您的任何一种选择好的做法/既包括警卫和#pragma once每一个头文件,或者只是那些东西,例如类的声明?

我很想把它放在每个标题中,但我担心它会不需要,只会增加编译时间.什么是良好做法或共同做什么?

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

Mat*_*eld 8

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

如果将来某些事情发生冲突,应该在每个头文件中加入警戒.此外,编译器处理包含保护所花费的时间很短,这将使编译更快,因为不需要处理额外的头.


πάν*_*ῥεῖ 6

#pragma once是特定于编译器的,而普通包含保护定义,应该适用于任何c ++预处理器.

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

使用包含警卫对于防止 代码中出现多个符号声明错误至关重要.您不应该担心c ++预处理器如何处理这些假设或影响(现代的处理器非常优化以有效地执行此操作).

  • 此外,可移植性声明是假的,因为那里的每个相关编译器都支持`#pragma once`. (5认同)
  • @ RandomPerson323 _"它是关于何时=使用它"_嗯,那么答案是:***每次***. (2认同)