- "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++编译小错误解决2009_10_10(不断增加中)
最新推荐文章于 2024-09-15 11:40:06 发布