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

来源:互联网 发布:学生电脑绘画软件 编辑:程序博客网 时间:2024/05/22 18:28
  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 << "";//不加也可以      }