我从 codeforces 博客中了解到,如果我们在 C++
程序中添加 #include <bits/stdc++.h>
,则无需包含任何其他头文件。 #include <bits/stdc++.h>
是如何工作的,可以使用它而不是包含单个头文件吗?
原文由 GorvGoyl 发布,翻译遵循 CC BY-SA 4.0 许可协议
我从 codeforces 博客中了解到,如果我们在 C++
程序中添加 #include <bits/stdc++.h>
,则无需包含任何其他头文件。 #include <bits/stdc++.h>
是如何工作的,可以使用它而不是包含单个头文件吗?
原文由 GorvGoyl 发布,翻译遵循 CC BY-SA 4.0 许可协议
该头文件不是 C++ 标准的一部分,因此是不可移植的,应该避免使用。
此外,即使标准中有一些包罗万象的标头,您也希望避免使用它来代替特定标头,因为编译器必须每次都实际读取并解析每个包含的标头(包括递归包含的标头)编译单元。
原文由 Robert Allan Hennigan Leahy 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
它基本上是一个头文件,还包括每个标准库和 STL 包含文件。我能看到的唯一目的是测试和教育。
参见例如 GCC 4.8.0 /bits/stdc++.h source 。
使用它会包含很多不必要的东西并增加编译时间。
编辑: 正如尼尔所说,它是预编译头文件的实现。如果您正确设置它以进行预编译,实际上它可以根据您的项目加快编译时间。 ( https://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html )
但是,我建议您花时间了解每个 sl/stl 标头并单独包含它们,并且不要使用“超级标头”,除非用于预编译目的。