C++ #包括<;bits/stdc++;。h>;不使用visual studio编译

C++ #包括<;bits/stdc++;。h>;不使用visual studio编译,c++,visual-studio,C++,Visual Studio,我最近看到,#include包含每个标准库和stl包含文件。当我尝试用visual studio 2013编译以下代码段时,它给出了一个错误C1083:无法打开包含文件:“bits/stdc++.h”:没有这样的文件或目录。但是它可以很好地处理代码块。有没有办法避免这个错误 #include <bits/stdc++.h> using namespace std; int main() { } #包括 使用名称空间std; int main() { } 我在一些

我最近看到,
#include
包含每个标准库和stl包含文件。当我尝试用visual studio 2013编译以下代码段时,它给出了一个
错误C1083:无法打开包含文件:“bits/stdc++.h”:没有这样的文件或目录
。但是它可以很好地处理代码块。有没有办法避免这个错误

#include <bits/stdc++.h>

using namespace std;

int main()
{

}   
#包括
使用名称空间std;
int main()
{
}   

我在一些帖子中看到,“头文件不是C++标准的一部分,因此是不可移植的”,应该避免。但我认为这对比赛编程很有帮助

有没有办法避免这个错误

#include <bits/stdc++.h>

using namespace std;

int main()
{

}   
是:不要使用仅由GCC而非Microsoft编译器提供的非标准头文件

<> P>有很多标题,C++标准要求每个编译器提供,如<代码> <代码>和<代码> <代码>。但是特定编译器对这些头的实现可能依赖于该编译器附带的其他非标准头,
就是其中之一

将标准头(例如
)视为“公共”接口,将特定于编译器的东西(如
位/
中的所有内容)视为“私有”实现。如果您希望自己的程序能够移植到其他编译器,甚至是同一编译器的未来版本,那么就不应该依赖于特定于编译器的实现细节


如果您想要一个包含所有标准头的头文件,您可以很容易地编写自己的头文件。

这是一个非标准头文件,它是libstdc++的一部分,通常随GCC提供。然而,VS附带了微软自己的STL实现,它不包含这样的文件。我建议停止使用它,而是包括必要的标准头,如
等。

要在Visual Studio中使用
位/stdc++.h
预处理器,您需要从下面给定的链接下载
stdc++.h
文件

  • 从以下链接下载文件:
  • 在以下目录中创建bits文件夹:
    C:\ProgramFiles(x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include
  • stdc++.h
    复制到bits文件夹
  • 如果Visual Studio正在运行,请重新启动并使用它

安装最新的MinGW。这是我的版本。查找安装指南

然后从…复制bits文件夹。。。 C:\MinGW\lib\gcc\mingw32\6.3.0\include\C++\mingw32\bits

至…(VS2019) C:\ProgramFiles(x86)\Microsoft Visual Studio\2019\VC\Tools\MSVC\14.27.29110\include


请注意,根据VS安装和许可,这将是“社区”/“专业的”。

我的答案将是针对Enterprise 2015,版本4.8.03761,更新3

在安装代码块时,还安装了MinGW(用于(W)窗口的(Min)极简主义(G)GNU编译器集合(GCC)。或者你可以单独安装

我认为这个问题是因为Visual Studio在其包含目录(Project->YourProject Properties->Configuration Properties->VC++目录->包含目录->按下拉箭头->->->评估值)中找不到bits/stdc++.h

您需要转到该目录,粘贴MinGW安装中的整个bits文件夹,我的文件夹位于(C:\MinGW\lib\gcc\mingw32\8.2.0\include\C++\mingw32)

一旦这样做了,我这边就没有错误了。 我希望这个答案能帮助任何想解决这个问题的人


谢谢。

这不是标准标题。不要依赖于实现细节。如果你真的需要一个包含所有其他内容的标题(你真的不想要),请使用你自己的标题。我本来会使用我自己的标题,但它在流行的OJ站点(如uva、loj等)中不会被识别。另外,为什么它在VS2013中不起作用?只是想知道它在代码块中的工作原理。因为它们使用不同的标准库实现。它在VS2013中不工作,因为只有GCC(由Code::Blocks使用)具有该文件。这就像在问为什么不能在Linux系统上包含。.hmm。理解。谢谢:)请避免使用像mega这样的网站的外部链接。它们很可能在不久的将来被破坏。用你最喜欢的搜索引擎搜索“gnu.org stdc++.h”。它应该出现在第一次点击或前几次点击中。