在讲授C/C++课程时,老师会讲到在程序中要根据所使用的函数而用 #include 命令包含相应的头文件。例如输入与输出要包含头文件<iostream> 或 <stdio.h>,数学函数要包含头文件<cmath> 或 <math.h>,如此等等。
不过读者可能在网上某些C++程序中看到如下预处理命令行:
#include <bits/stdc++.h>
这是用 #include 命令包含头文件 <bits/stdc++.h> 。它是C++中支持的一个几乎“万能”的头文件,几乎包含所有的可用到的C++库函数。而它的内容,实际上就是用 #include 命令逐个地把所有C++头文件包含进来:
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
……
在一些计算机编程竞赛中常常有人使用这个“万能头文件”。其主要优点是:对于程序中使用的每个函数,不需要记忆相应的头文件名,减少了编写所有必要头文件的工作量,在竞赛中能节约一点点时间。
虽然这是一个“万能的”头文件,但其实C/C++教材上不怎么介绍使用它,课堂上老师其实也不提倡使用它的。原因有这几方面:
1、它包含大量在程序中不需要使用的函数库的头文件,每次编译时编译器都必须实际读取和分析每个包含的头文件,会增大编译时间,增大生成的可执行文件的体积。在实际软件开发中,应该只包含程序中所用到的函数库的头文件,以便控制编译时间和可执行文件体积。
2、这个头文件不是C++标准的一部分,不属于GNU C++库的标准头文件,因此是不可移植的,在部分情况下可能会失败。
3、习惯于使用这个头文件的编程者会对头文件与函数库的概念比较淡漠,缺乏“把程序中用到的函数的头文件包含到程序中来”的观念。这对于后续学习程序设计和实际软件开发工作是不利的。
So,后面学习编程的时候,我们老老实实的include需要的头文件吧!
暂无评论内容