我在我的C++项目中的每个头文件中使用#pragma once
(或者您使用像#ifndef...
这样的包含保护),这是巧合还是大多数开源项目中常见的做法(为避免仅基于个人项目经验的答案)。如果是这样,请问为什么不反过来:如果我想要一个头文件被多次包含,我使用一些特殊的预处理器命令,如果不是,我则将文件保持原样。
我在我的C++项目中的每个头文件中使用#pragma once
(或者您使用像#ifndef...
这样的包含保护),这是巧合还是大多数开源项目中常见的做法(为避免仅基于个人项目经验的答案)。如果是这样,请问为什么不反过来:如果我想要一个头文件被多次包含,我使用一些特殊的预处理器命令,如果不是,我则将文件保持原样。
#include <vector>
会导致适当的声明和定义被看到。编译器可以有特殊处理来识别标准头文件名并将其内容硬编码到其中,或者它可以从对象数据库获取AST数据块...或者它可以只是让预处理器在文本上包含一个文件(这是所有常见实现实际上所做的)。 - Jonathan Wakely
#pragma once
不是标准写法;而#ifndef/#define/#endif
则是标准写法。 - T.C.