c++ - 为什么我不应该#include <bits/stdc++.h>?

标签 c++ portability turbo-c++ c++-faq implementation-defined-behavior

我用我的代码发布了一个问题,其唯一的 #include 指令如下:

#include <bits/stdc++.h>

我的老师告诉我这样做,但在评论部分我被告知我不应该这样做。

为什么?

最佳答案

包括<bits/stdc++.h>在 Stack Overflow 上似乎越来越常见,也许是本学年新添加到国家类(class)中的内容。

我想这些优势是这样模糊地给出的:

  • 你只需要写一个#include行。
  • 您无需查找所有内容都在哪个标准标题中。

不幸的是,这是一个懒惰的 hack,直接命名 GCC 内部 header 而不是像 <string> 这样的单个标准 header , <iostream><vector> .它破坏了便携性并养成了糟糕的习惯。

缺点包括:

  • 它可能只适用于那个编译器。
  • 你不知道使用它时它会做什么,因为它的内容不是由标准设定的。
  • 即使只是将您的编译器升级到它自己的下一个版本也可能会破坏您的程序。
  • 每个标准头都必须与源代码一起解析和编译,这很慢,并且在某些编译设置下会导致可执行文件庞大。

不要这样做!


更多信息:

Quora 不好的例子:

关于c++ - 为什么我不应该#include <bits/stdc++.h>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31816095/

相关文章:

c++ - 使用 DOSBox 来自 turbo c++ 模拟器的意外输入

c++ - 为什么尽管我声明了一个不完整类型的自动实例,但这段代码仍能编译和运行

枚举类型的 C++ 静态成员变量无法编译

Ax=b 线性代数系统的 C++ 内存高效解决方案

c++ - 获取用户名的便携方式

c++ - 如何使 DEBUG 宏可移植

C++ static const变量和销毁

c# - 在 C# 中是否有等效的 boost::timer::cpu_timer?

C - Windows 和 Unix 上的可移植代码

c++ - Getline 跳转到下一个 cin 并跳过上一个 cin