打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
c++小程序出错解决方法

在Linux下写C++程序,在命令行模式下,建立后缀名为.cpp的文件,按照从网上搜来的最简单程序写入,

     #include <iostream.h>

 int main()
   {
   cout << "Hello world!\n" << endl;
    return 0;
    }

在g++ 编译命令下会出现“cout /endl 在此作用域尚未声明”

 

解决办法:
方法一:在 #include 下面加上一句“using namespace std;”

#include <iostream>       
  1. using namespace std 
  2. int main(void            
  3.   。。}

方法二:在使用cout时将cout替换为std::cout

 

 按照方法做,仍然不成功,细细观察,会发现头文件有差别

一个是#include <iostream.h>  一个是#include <iostream>  ,果断把前者改为后者,问题解决了

 

关于二者的差别

    

iostream.h为非法的输入输出流,.h的头文件是C语言格式的,由于当时还没有命名空间这个说法,所以也就不存在std这个命名空间标示符。所以用iostream.h也就用不着std或者using namespace std.

 

iostream为标准输入输出流,它是C++规范的带有命名空间的头文件,它包含在std命名空间内。

 

iostream流包含cin和cout输入输出流,使用cout的时候前面必须加std

 

对于编码,除了是否加std或者using namespace 之外,其他编码基本一样,对于不同平台,前者不可移植。

 

通告比较我们了解到iostream是C++格式的头文件,而iostream.h是C语言格式的头文件,由于C++格式的iostream是规范的带有命名空间的头文件,所以在使用iostream标准库中的cout对象时,要加上命名空间标示符std,而C格式的非标准的输入输出流iostream.h则不用.

 

命名空间这个新概念从C++开始才真正引入,下面介绍命名空间的作用。

 

C++引入命名空间(namespace)的目的是为了减少和避免命名冲突,程序较大时,就很难避免重名,特别是多人合作的情况下。过去C语言中的解决方法是靠人为的注意。并且加长名字,避免重名。这样做会使得一些名字看上去没有意义或者难以理解,而程序员在写程序时,也会受这个问题的限制,不能自由地命名自己使用的变量或者函数。通过使用namespace,可以解决这一问题,这就是C++引入namespace这个概念的好处.

 

举一个形象的例子:

有两个学生,一个叫小王,一个叫小李,他们都各自拥有一本相同的语文书,为了区分这两本书,他们就要在书的封皮上写上自己的名字---小王或者小李。同理,我们调用cout对象时也要在前边写上cout所属的命名空间"std::",而在代码里加 using namespace std,就可以不用再加"std::"。但是最好的方法就是不用 using namespace std,而是用 using std::cout,这样可以避免命名重复,因为不同的名字在不同的命名空间内,将它们都释放出来时,若不小心会造成使用错误库函数中的对象的情况。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
#include<iostream>和#include<iostream.h>的区别
using namespace std详解(收集整理) - mainsun -- IT博客...
命名空间std,using namespace std (转载)
详解C++中的const关键字及与C语言中const的区别
精通C++先从Hello world开始
安装C++的帮助手册及其使用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服