fatal error: iostream.h: 没有那个文件或目录 原因与解决方法

今天在用“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.

fatal error: iostream.h: 没有那个文件或目录

 

原因:

通过上图的报错也能知道,是 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.

fatal error: iostream

 

又请教了各种大神,最后才知道我这最主要原因就是代码文件命名时,后缀名 .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 

 

总结:

真心不容易,一个小问题也踩了不少的坑。

    A+
发布日期:2021年12月25日 19:56:04  所属分类:c/c++
最后更新时间:2021-12-26 18:44:40
付杰
  • ¥ 198.0元
  • 市场价:298.0元
  • ¥ 0.0元
  • 市场价:199.0元
  • ¥ 89.0元
  • 市场价:129.0元
  • ¥ 99.0元
  • 市场价:129.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: