回 帖 发 新 帖 刷新版面

主题:自定义命名空间 using namespace std的位置

在一些头文件里,看到自定义的命名空间,比如:namespace A{using namespace std;函数原型},为什么using namespace std要放在这个命名空间里,不能放在命名空间之前吗?
#ifndef A
#define A
namespace a
{
    using namespace std;

    函数1
    函数2    
}
#endif 

#ifndef A
#define A
using namespace std;

namespace a
{
    函数1
    函数2    
}
#endif 
有什么不同?
个人觉得在自定义命名空间里,是不需要用using namespace std;,除非后面跟的函数必须在std里

回复列表 (共2个回复)

沙发

找本标准C++的书籍看看吧。概念混淆的地方比较多。using namespace 和 namespace 定义是两回事。
namespace{...}即可放在头文件中,也可放在源文件中,using 即可在函数内部,也可在全局。 你得先准确知道它是什么,再做你的结论。需用不需用using namespace std, 要看,这个代码块有没有使用std里的名字。而不仅仅是函数。函数名仅是名字的一种。

板凳

囧,不是的。
一个头文件里,写了一个命名空间,因为要用的函数里有runtime_error类型,所以要写
using namespace std,
一般习惯把using namespace std写在前面,但是看到有一个程序是写在命名空间里的,想知道有没有什么不同而已。
唉,不是把using和namespace搞不清楚。。。。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册