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++编译错误"a storage class can only be specified for objects and functions"解决方法
- Mac下使用Eclipse编译C/C++文件出现 launch failed, binary not found 错误的解决办法
- C和C++里面常见错误和异常出现怎么解决总结(不断更新)
- C++编译问题解决错误---1 error LNK2019
- 两个C++编译错误及解决办法--does not name a type和field `XX' has incomplete type
- 两个小问题解决记录:XCode中多Target时CFBundleDisplayName的多语言本地化;用C++写socket程序时编译错误说read和write找不到
- 【完美解决】arcgis engine 10.0 for cross platform C++ 在visual studio2010上编译的AE程序 的License无法初始化错误。
- 解决vs中编译c++项目时报类似:LINK : fatal error LNK1104: 无法打开文件“kernel32.lib”错误
- C++ 常见编译连接错误的解决!
- 解决C++编译出现的重定义问题:multiple definition of ’XXX‘错误
- 解决Visual C++ 混合编译C和C++文件时的错误fatal error C1853
- VS2015 C++编译失败,提示link1171,无法加载mspdb140.dll错误解决方法!
- 解决NDK编译so从C改为C++出现Native method not found错误
- DSP中由C转成C++出现编译 badly formed pragma错误的解决.
- Mac下使用Eclipse编译C/C++文件出现 launch failed, binary not found 错误的解决办法
- 【网络SOCKET编程】DEV-C/C++ 编译时出现undefined reference to `WSAStartup@8'等错误解决办法
- C++编译错误解决方法
- C++ map以结构体为key的编译错误和解决方法
- C/C++ 常见编译错误及解决办法
- C/C++编译时的Link.EXE错误问题与解决方法