c++ - 在同一范围内重新定义命名空间名称会破坏 ODR 规则吗?
问题描述
在 C++ 入门 ch 18 上。命名空间:
“与任何名称一样,名称空间名称在定义名称空间的范围内必须是唯一的。名称空间可以在全局范围内或另一个名称空间内定义。它们可能不在函数或类内定义。”
但我猜如果没有错的话;在同一范围内多次定义命名空间不会破坏 ODR,而是重新打开该命名空间并可能添加到它。
这是我的例子:
namespace fooNS{
int x = 5;
}
namespace fooNS{
int y = 10;
}
int main(){
std::cout << fooNS::x << '\t' << fooNS::y << '\n';
}
我的代码工作正常,那么“与任何名称一样,名称空间名称在定义名称空间的范围内必须是唯一的。”是什么意思?
那么在某些情况下,重新定义相同的命名空间会破坏 ODR 规则吗?谢谢!
解决方案
推荐阅读
- php - PHP 致命错误:未捕获的错误:在 null 上调用成员函数 appendChild()
- winforms - Powershell/Forms - 如何在选项卡控件中锚定列表视图?
- python - 从 pandas.DataFrame.isin 获取单个 True/Flase 值
- mysql - A connection attempt failed because the connected party did not properly respond after a period of time - VB
- apl - 是否曾经有一个 APL-ASCII 音译方案获得了重大采用?
- sql-server - T-SQL 使用触发器或函数创建自定义列
- webpack - 在 webpack 配置中禁用部分 babelrc
- gradle - 如何在 Raspberry Pi 上运行 JavaFX 11 应用程序?
- c++ - 从数组中删除条目
- r - 使用 R 从 NetCDF4 文件访问大型数据集