我最近看到#include <bits/stdc++.h>
包含每个标准库和stl包含文件。当我尝试使用visual studio 2013编译以下代码段时,它会给出error C1083: Cannot open include file: 'bits/stdc++.h': No such file or directory
。但它与codeblocks完美搭配。有没有办法避免这个错误?
#include <bits/stdc++.h>
using namespace std;
int main()
{
}
我在一些帖子中看到,头文件不是C ++标准的一部分,因此是不可移植的,应该避免使用#39;。但我认为它在比赛编程中很有用。
答案 0 :(得分:19)
有没有办法避免这个错误?
是:不要使用仅由GCC提供的非标准头文件,而不是Microsoft的编译器。
C ++标准要求每个编译器提供许多标头,例如<iostream>
和<string>
。但是这些头文件的特定编译器实现可能依赖于该编译器附带的其他非标准头文件,而<bits/stdc++.h>
就是其中之一。
将标准标题(例如<iostream>
)视为&#34; public&#34;接口和特定于编译器的东西(如bits/
中的所有内容)作为&#34; private&#34;实现。如果您希望程序可以移植到其他编译器 - 甚至是相同编译器的未来版本,那么您不应该依赖编译器特定的实现细节。
如果你想要一个包含所有标准标题的标题,那么编写自己的标题很容易。
答案 1 :(得分:2)
要在 Visual Studio 中使用 bits/stdc++.h
预处理器,您需要从下面给出的链接下载 stdc++.h
文件。
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include
C:\Program Files (x86)\Microsoft Visual Studio\2019\
可能为空。在这种情况下,请转到 vs 代码并在顶部键入 #include <
。您将获得自动完成建议。与每个建议一起,每个建议都应该显示一条路径。复制路径并将其粘贴到文件资源管理器中。该路径将使您进入上述相同的 include
文件夹。bits
的新目录并将 stdc++.h 文件粘贴到 bits
文件夹中。答案 2 :(得分:0)
这是非标准头文件,已知是libstdc ++的一部分,该文件通常随GCC一起提供。但是VS带有Microsoft自己的STL实现,其中不包含此类文件。我建议停止使用它,而改为包含必要的标准标头,例如<iostream>
,<vector>
,<string>
,<algorithm>
等。
答案 3 :(得分:-1)
我的回答是 Enterprise 2015,版本 4.8.03761,更新 3。
安装代码块时,还安装了 MinGW(用于 (W)Windows 的 (Min)minimalist (G)GNU Compiler Collection (GCC))。或者你可以单独安装。
我认为这个问题是因为 Visual Studio 在它的包含目录中找不到 bits/stdc++.h (Project -> YourProject Properties -> Configuration Properties -> VC++ Directories -> Include Directories -> 按下拉箭头 - > <编辑..> -> 评估值)。
您需要转到该目录,然后粘贴 MinGW 安装中的整个 bits 文件夹,我的在 (C:\MinGW\lib\gcc\mingw32\8.2.0\include\c++\mingw32) 中。>
一旦完成,我就没有错误。 我希望这个答案能帮助任何想要解决这个问题的人。
谢谢。
答案 4 :(得分:-3)