unnamed-namespace相关内容

未命名的命名空间与全局声明

使用未命名的名称空间和全局声明有什么区别? 使用这两种方法有什么具体的背景吗? 我们可以访问外部源文件中未命名的名称空间组件吗? 解决方案 未命名名称空间的目的是在翻译单元(=源文件)中提供唯一的名称空间,而无需显式前缀.这样可以保证您的全局名称不会与其他翻译单元中的其他相等的全局名称冲突. 例如: //file1.cpp命名空间{无效foo(){/* ... */}}#inc ..
发布时间:2021-04-29 20:39:41 C/C++开发

嵌套的未命名名称空间?

使用未命名的名称空间时,如果它嵌套在另一个名称空间中,会有任何问题吗?例如,以下代码中的Foo1.cpp和Foo2.cpp之间有什么真正的区别: //Foo.h命名空间Foo{无效fooFunc();}//Foo1.cpp命名空间Foo{命名空间{无效privateFunction(){...}}无效fooFunc(){privateFunction();}}//Foo2.cpp命名空间{无效p ..
发布时间:2021-04-19 21:02:53 C/C++开发

未命名名称空间中名称的外部链接

根据C ++ Standard的第3.5 / 4条: 未命名的名称空间或直接或间接声明的名称空间 同时在第7.3.1.1段中,我们有注96): 尽管未命名命名空间中的实体可能具有外部链接,但是 实际上通过其转换 单元的唯一名称来限定,因此永远 如何在未命名的命名空间中显式建立外部链接,以及如何检查链接是否真正存在如果Standard保证没有办法从另一个翻译单元访问未命名 ..
发布时间:2020-09-28 01:33:22 C/C++开发

在确保翻译单元之间的可用性时是否静态弃用?

从以下 stackoverflow answer ,用户说: 这意味着变量对于翻译单元是本地的(简单地说, 到单个源文件),并且不能从外部访问它。这个 的静态使用实际上在当前的C ++标准 - 中被弃用,而不是你应该使用匿名命名空间: static int x = 0; 应该是: namespace { int x = 0; } ..

如何在标头中使用未命名的命名空间会导致ODR违规?

在“Google C ++样式指南”中,命名空间部分“ 我理解为什么要使用未命名的命名空间在头文件中容易导致违反C ++ One Definition Rule(ODR)在实施文件中使用未命名的命名空间可能会导致ODR违规,但不会影响标题中的使用方式。 原因是如果你真的在匿名 命名空间中使用任何东西,你有未定义的行为风险。例如: 命名空间{ double const pi = 3 ..
发布时间:2016-10-25 13:34:13 C/C++开发

如何在标头中使用未命名的命名空间会导致ODR违规?

在“Google C ++样式指南”中,命名空间部分“ 我理解为什么要使用未命名的命名空间在头文件中容易导致违反C ++ One Definition Rule(ODR)在实施文件中使用未命名的命名空间可能会导致ODR违规,但不会影响标题中的使用方式。 原因是如果你真的在匿名 命名空间中使用任何东西,你有未定义的行为风险。例如: 命名空间{ double const pi = 3 ..
发布时间:2016-10-24 17:23:17 C/C++开发