c++编译小错误解决2009_10_10(不断增加中)

  1. "cout undeclared identified" : 
  2. 加入名字空间后的名字都是对全局空间隐藏的,但该名字空间的名字却不隐藏(除非该空间在另一个
    名字空间里)。cout隐藏在std里,但std本身不隐藏,所以“#include<iostream>”之后,不必做
    使用声明便可直接用std,通过它访问cout。
    
    若你做了使用声明,对该使用声明所处的作用域的隐藏便被抵消(作用域的开端到声明之间的那段除外),
    即不必使用空间名和名字空间限制符作为前缀。
    (A)这简单的程序里只有全局和局部空间,没有其它的名字空间:
    
    void  main( ) {
        std::cout << "";  // 错误:std不存在。
        cout << "";       // 错误:std不存在cout就不用提了。
    }
    
    
    (B)这个则多了一个叫std的名字空间。std这名字也可见了:
    
    #include<iostream>
    void main( ) {
        std::cout << "";  // OK:可通过std骚扰cout。
        cout << "";       // 错误:cout仍然被包在std里面,不可见。
    }
    
    iostream头文件里有std的声明。在编译之前,预处理器会用iostream里的全部内容来代替
    “#include<iostream>”这个预处理器指示符。效果是,这程序包含iostream里的所有代码。
    include是包含的意思。包含指示是在全局空间里,所以在指示之后的任何地方,std这个名字
    是可见、可访问的。
    
    (C)这个不包含声明std的代码却尝试打开std包,  落了个跟(A)一样狼狈的下场:
    
    using namespace std;
    void  main( ) {
        std::cout << "";  // 错误:std不存在。
        cout << "";       // 错误:std不存在cout就不用提了。
    }
    
    (D)这个声明了std(曝露了std)并把std打开,让里面的名字(cin、cout、cerr、...)跟
         std一样暴露。
    #include<iostream>
    using namespace std;
    void  main( ) {
        std::cout << "";//加std可以 
        cout << "";//不加也可以      
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Emilin Amy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值