C++头文件与命名空间问题

今天上windows网络编程遇到一些C++很基础的问题

碰到下面这种情况:

1
2
3
4
5
6
#include <iostream>
using namespace std;
int main()
{
...
}

还有另一种情况

1
2
3
4
5
6
#include <iostream>
int main()
{
using namespace std;
...
}

那么using namespace std;到底放在哪呢?弄懂这个问题之前,先明白这句话的由来:

C语言的使用的头文件是#include <iostream.h>,而C++使用的的头文件是#include <iostream>。早些的编码将标准库功能定义在全局空间里,声明在.h后缀的头文件中;C++为了和C区分开,也为了正确使用命名空间,规定头文件不使用.h后缀

当使用#include <iostream>时,未定义命名空间,因此需要使用namespace

using namespace std意思是使用标准库;usingnamespace都是C++关键词,C++标准程序库中的所有标识符都被定义在一个名为std的namespace中

回到这个问题上,第一种是在整个文件中都引入了std命名空间,第二种只在main函数中引入std命名空间