为什么 <bits/stdc++.h> 中有一个“.h”扩展名?

Why is there a ".h" extension in <bits/stdc++.h>?

(据我所知)C++ 不接受头文件的“.h”扩展名(因为它通常不存在于其他 include 语句中)那么 include <bits/stdc++.h> 如何在 C++ 中工作为什么它有“.h”扩展名?

why there is “.h” extension in <bits/stdc++.h>

因为创建文件的开发人员选择了那个名称。

命名 headers 后缀为 .h 是惯例,开发人员大概遵循了这样的惯例。

(As far as I know)c++ doesn't accept the ".h" extension header files

你的认识是错误的。接受任何“延期”,包括不延期。 header 文件的命名方式没有限制。

你已经标记了 [c++-standard-library],所以我要补充一点,C++ 标准 header 都是没有后缀命名的,除了那些从 C 标准库继承的使用传统的 .h 后缀(并且确实有 non-suffixed 别名)。 bits/stdc++.h 不是标准 header 尽管它可能是标准库实现的一部分。

C++ 不对 #include 语句.

中命名的标准库头文件使用 .h 扩展

但是 bits/stdc++.h 不是 标准头文件,因此标准库命名约定不适用于它。无论如何

从 include 语句中使用的名称到文件名,没有强制映射 IIRC。如果你愿意,你当然可以在你自己的头文件上使用 .h 扩展,尽管如果你在项目中混合使用 C 和 C++ 可能会造成混淆。

(As far as I know)c++ doesn't accept the ".h" extension header files

这是一个错误的说法。

您可以在该语句中使用任何文件名。

预处理器插入所有文件后,结果是有效的C++代码,编译时不会有任何错误。

标准 headers 的情况是 C++ 标准库开发人员在没有扩展名的文件中创建了标准功能。所以文件名是“vector”,所以使用 #include <vector>

如果开发人员添加了一个文件“vector.hpp”(在文件的body中有一个语句#include <vector>)那么它必须被用作#include <vector.hpp>.