C++ 为什么默认情况下,include在windows上不起作用?

C++ 为什么默认情况下,include在windows上不起作用?,c++,compiler-errors,mingw,header-files,preprocessor-directive,C++,Compiler Errors,Mingw,Header Files,Preprocessor Directive,我已经在windows上安装了mingw-w64编译器。但是在C++程序预处理器指令中使用包含总是会出错。如何修复此问题?bits/stdc++.h不是标准头文件。因此,除非使用特定的编译器,否则不能保证它能正常工作。即使是同一编译器的不同版本也可能提供,也可能不提供 当它可用时,BITS/STDC++.H只包含每个标准的C++头文件。这对于刚开始学习该语言的人来说可能是有意义的,因此他们不必担心弄清楚他们需要哪些内容,哪些不需要。但是使用它会减慢编译时间,在某些情况下可能会使可执行文件比需要的

我已经在windows上安装了mingw-w64编译器。但是在C++程序预处理器指令中使用包含总是会出错。如何修复此问题?

bits/stdc++.h不是标准头文件。因此,除非使用特定的编译器,否则不能保证它能正常工作。即使是同一编译器的不同版本也可能提供,也可能不提供

当它可用时,BITS/STDC++.H只包含每个标准的C++头文件。这对于刚开始学习该语言的人来说可能是有意义的,因此他们不必担心弄清楚他们需要哪些内容,哪些不需要。但是使用它会减慢编译时间,在某些情况下可能会使可执行文件比需要的更大,并且正如您所发现的那样,会使代码不可移植

唯一的解决方案是不使用它,而是只包含所需的特定标题。你真的应该按照你的计划去做;当您需要在头中声明某个函数时,可以包括该头,然后编写函数调用。一些IDE会告诉您每个函数需要哪些内容


但是如果你已经把代码都写好了,你可以作弊。只需删除include行并尝试编译即可。如果编译器抱怨缺少或未定义的符号,请用谷歌搜索该符号以确定它来自哪个标头,并将其包括在内。冲洗并重复,直到你得到一个干净的编译。

不使用它?不是标准C++,它不必存在,但是使用包含-你在哪里得到使用这个头的想法?没有一本好的C++书籍。或者你是想从那些在线竞争编码网站中学习C++吗?@保尔麦肯齐:这是竞争性速度编程世界的标准做法,包括同样的书籍。要省下宝贵的打字时间!我等不及那些站点去C++ 17了。然后,在许多情况下,键入该标题所节省的所有时间都会导致编译器错误,而竞争对手对该问题摸不着头脑,从而浪费时间。特别是如果他们有任何标识符,名称为“遵循最后一段中的步骤”,则将获得要编译的代码,但结果不一定是可移植的。允许标准库标题定义该标题不需要的其他符号,因此添加一个标题可能会修复其他缺少的符号。当你移动到另一个编译器时,它们将是未定义的,你必须添加更多的include指令。@PeteBecker是的,这就是为什么我称之为欺骗的原因。但我不认为这会太糟糕,因为到那时OP将知道如何查找标准头文件。