c++ - 为什么#包括默认情况下在 Windows 上不起作用?
问题描述
我已经在 Windows 上安装了 mingw-w64 编译器。但是在 c++ 程序预处理器指令中使用 #include<bits/stdc++.h> 总是会出错。如何解决这个问题?
解决方案
bits/stdc++.h
不是标准的头文件。因此,除非使用某些特定的编译器,否则不能保证它可以工作。甚至同一编译器的不同版本也可能提供也可能不提供。
当它可用时,它bits/stdc++.h
只是#include
每个标准 C++ 头文件。对于刚开始使用该语言的人来说,这可能是有意义的,因此他们不必担心弄清楚他们需要哪些包括哪些不需要。但是使用它会减慢编译时间,在某些情况下可能会使可执行文件比它需要的更大,并且(正如您所发现的)使代码不可移植。
唯一的解决方案是不使用它,而#include
只使用您需要的特定标头。您真的“应该”在编程时这样做;当您需要在标头中声明某个函数时,您可以包含该标头,然后编写函数调用。一些 IDE 会告诉您每个功能需要哪些内容。
但是如果你已经把所有的代码都写好了,你就可以作弊。只需删除该#include <bits/stdc++.h>
行并尝试编译。如果编译器抱怨缺少或未定义的符号,请搜索该符号以找出它来自哪个标头,以及#include
它。冲洗并重复,直到你得到一个干净的编译。
推荐阅读
- reactjs - React:有条件地渲染菜单中的项目
- c# - C# 线程与 Selenium
- python-3.x - Python 类:`call` 和 `__call__` 之间的真正区别是什么?
- python-3.7 - 行中的错误:自动完成添加了 from builtins import True
- sql - 显示具有某种诊断类型的患者
- android - 在第 x 行找不到可执行代码 - 尝试调试时
- javascript - 禁用后无法启用textarea
- javascript - 如何保护 React 路由器中的路由
- javascript - Array.push 新对象,最后一个对象被推送
- flutter - 行小部件需要 textDirection