为什么 #include<bits/stdc++.h> 默认情况下在 windows 上不起作用?

Why #include<bits/stdc++.h> does not work by default on windows?

我已经在 windows 上安装了 mingw-w64 编译器。但是在c++程序预处理器指令中使用#include总是报错。如何解决?

bits/stdc++.h 不是标准的 header 文件。因此,除了某些特定的编译器外,不能保证它可以工作。即使是同一编译器的不同版本也可能提供也可能不提供。

当它可用时,bits/stdc++.h 只是 #include 每个标准 C++ header 文件。这对于刚开始使用该语言的人来说可能很有意义,因此他们不必担心弄清楚哪些包含他们需要,哪些不需要。但是使用它会减慢编译时间,在某些情况下可能会使可执行文件比需要的更大,并且(正如您发现的那样)使代码 non-portable.

解决此问题的唯一方法是不使用它,而是 #include 只使用您需要的特定 header。您真的“应该”在编程时这样做;当你需要在 header 中声明的某个函数时,你可以包含那个 header,然后编写函数调用。一些 IDE 会告诉您每个功能需要哪些。

但是如果你已经把代码都写好了,你就可以作弊了。只需删除 #include <bits/stdc++.h> 行并尝试编译。如果编译器抱怨缺少或未定义的符号,google 符号来确定它来自哪个 header,然后 #include 它。冲洗并重复,直到获得干净的编译。