您的位置:首页 > 编程语言 > C语言/C++

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

2009-10-10 13:44 369 查看
"cout undeclared identified" : 

加入名字空间后的名字都是对全局空间隐藏的,但该名字空间的名字却不隐藏(除非该空间在另一个

名字空间里)。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 << "";//不加也可以
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ iostream include c
相关文章推荐