C++:对不存在的命名空间使用命名空间指令
C++: using namespace directive for non-existing namespace
我正在尝试用g++(版本7.5.0(编译以下代码
using namespace nspace;
int main()
{
return 0;
}
它给出错误如下
$ g++ above_code.cpp
namespaces_mystery1.cpp:1:17: error: ‘nspace’ is not a namespace-name
using namespace nspace;
^~~~~~
namespaces_mystery1.cpp:1:23: error: expected namespace-name before ‘;’ token
using namespace nspace;
^
以上行为正是我所期望的。
但当我试图编译下面的代码时,它编译得很好,没有像上面那样的错误。
using namespace std;
int main()
{
return 0;
}
为什么与名为nspace的命名空间相比,名为std的命名空间有这种不同的行为
命名空间nspace
在遇到using namespace nspace;
时不存在,而std
命名空间存在。后者可能是真的,因为隐含或显式地包含了C++标准库的方面,或者编译器本身甚至可能对其进行硬编码
如果你写了
namespace nspace{}
在using
语句之前,则编译将成功。
相关文章:
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- 通过继承类使用来自不同命名空间的运算符
- 使用命名空间时出现多个定义错误
- CUDA内核和数学函数的显式命名空间
- 嵌套的匿名命名空间
- CMakeLists.txt中的命名空间表示法
- 类是C++中的命名空间吗
- 嵌套命名空间的"using"指令,但需要命名内部命名空间
- 在命名空间中使用指令和函数重载
- 在实现文件中,我们应该更喜欢"using namespace"指令还是将实现包装在命名空间 { } 中?
- 即使在使用命名空间指令后也没有明确的引用错误
- 在命名空间中放入一个标准的纯C头#include指令可以吗
- 是否所有使用指令的方式与使用命名空间std的方式相同
- 使用指令了解命名空间
- c++ 条件包含指令中是否允许命名空间
- 可以将代码包装在匿名命名空间中以使用指令吗
- 为什么在使用命名空间指令时没有为函数添加命名空间