对于您可以包含的所有其他标准库头文件,必须通过以下任何方法指定命名空间:
using namespace std;
using std::xxx;
int main() {
std::xxx;
}
我到目前为止遇到的唯一例外是在<cmath>
库中,到目前为止我所使用的所有函数都不需要上述任何函数,以便在不指定命名空间的情况下使用它们。那是为什么?
注意:我可能错了<cmath>
是唯一不需要指定命名空间的标准库头,或者<cmath>
中的每个函数都是这样的。我刚刚没有遇到过我在日常使用中所说的例外情况。
答案 0 :(得分:3)
C ++标准允许实现将标准C头中声明的名称放在全局命名空间中。
来自C ++标准(17.6.1.2标题)
- ...但是,在C ++标准库中,声明(在C中定义为宏的名称除外)在命名空间范围内 命名空间std的(3.3.6)。这些名称是否未指明 首先在全局命名空间范围内声明,然后是 通过显式使用声明(7.3.3)注入到命名空间std中。
醇>