我应该将外部标头放在 .h 文件还是.cpp文件中?

Should I put external header in .h file or .cpp file?

本文关键字:文件 cpp 外部 我应该      更新时间:2023-10-16

假设我有一个在foo.h中定义的函数:

#pragma once 
#include <vector>
#include <string>
void foo(std::vector<std:string> input);

和 In 在实现文件中foo.cpp我需要使用另一个库(比如std::map(来实现函数 foo。

void foo(std::vector<std:string> input){
...
std::map ...
...
}

请注意,声明中不需要std:map,它只是特定于实现的。

我应该将#include <map>放入foo.h还是foo.cpp文件中?

我知道代码将针对这两种情况进行编译,我想知道什么是好的做法?

将包含放在源文件中需要的位置。

将其放在标头中将不必要地导致标头的所有用户也包含<map>,无论他们是否需要它。

对于琐碎的项目,这是无关紧要的,但对于大型项目来说,这很重要,因为无意义包括增加编译时间并增加名称冲突的风险。

简洁,只提供真正需要的东西。

否则,在一个真正的大型项目中,你最终会得到一堆每个人都害怕触摸的头文件,因为毕竟可能需要它。

此外,它将使项目中的其他人也包括地图库,这是不必要的开销(增加编译时间和/或增加名称重叠的危险(。