今天在用“c/c++编写程序实现:多进程复制一个目录”,在“编译”程序的时候,结果报错如下:
ubuntu@ubuntu-VirtualBox:~$ sudo gcc -o multicopy multi-process-file-copy.c
multi-process-file-copy.c:1:10: fatal error: iostream.h: 没有那个文件或目录
1 | #include <iostream.h>
| ^~~~~~~~~~~~
compilation terminated.
原因:
通过上图的报错也能知道,是 iostream 的问题,而且还是第一行代码:
#include <iostream.h>
iostream的意思是输入输出流,iostream头文件定义标准输入/输出流对象,包含了操作输入输出流的方法,比如读取一个文件,以流的方式读取;其作用是:让初学者有一个方便的命令行输入输出试验环境。
解决方法:
如果你是新手的话,初识 c/c++ 可能还看不出来。对于 c/c++ 高手来说已经知道原因与解决方法了。
由于我是新手,我也是 一个坑一个坑踩出来的,具体解决步骤如下:
我查了一下资料才知道:
iostream.h是旧的写法,现在新的都是直接用 iostream 。
旧的C++头文件,例如:iostream.h,他们虽然被标准化委员会所抛弃,但由于各大厂商为了各自的商业利益仍然将继续存活下去,这些头文件的内容将不处于namespace std中。
新的C++头文件,例如:iostream ,虽然提供了和旧有头文件相同的功能,但他的内容都并入了namespace std中,从而有效避免了名字污染的问题。
1、只需要将:
#include <iostream.h>
修改为
#include <iostream>
我以为这样就可以了,结果“编译”的时候,依然报错如下:
ubuntu@ubuntu-VirtualBox:~$ sudo gcc -o multicopy multi-process-file-copy.c
multi-process-file-copy.c:1:10: fatal error: iostream: 没有那个文件或目录
1 | #include <iostream>
| ^~~~~~~~~~
compilation terminated.
又请教了各种大神,最后才知道我这最主要原因就是代码文件命名时,后缀名 .c 和 .cpp 是不一样的。会导致C++的库无法识别。
2、只需要修成为 .cpp 即可。
ubuntu@ubuntu-VirtualBox:~$ mv multi-process-file-copy.c multi-process-file-copy.cpp
再次“编译”成功。
ubuntu@ubuntu-VirtualBox:~$ sudo gcc -o multicopy multi-process-file-copy.cpp
总结:
真心不容易,一个小问题也踩了不少的坑。