c++ - 声明一个静态常量和一个常量到未命名的命名空间有什么区别?

标签 c++ static namespaces constants

据我所知,有两种方法可以声明一个只在一个文件中可见的常量变量:

  1. 声明static const int VARIABLE = 1
  2. 在未命名的命名空间中声明它:
namespace { const int VARIABLE = 1; }

那么有什么区别呢?

最佳答案

既然是const,那么两者都有内联,没有区别。因此,让我们考虑更有趣的情况,它不是 const

在那种情况下,实际上没有什么区别。

从技术上讲,第一个将具有内部链接,因此无法从另一个翻译单元访问该名称;第二个将具有外部链接,但不能从另一个翻译单元访问,因为它周围的 namespace 无法命名。

关于c++ - 声明一个静态常量和一个常量到未命名的命名空间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23631778/

相关文章:

java - Java中是否可以通过单个声明对整个类进行静态导入?

c# - 在 c# 中,如何选择命名空间和类使用的命名约定?

c# - 找不到命名空间名称 'DispatcherTimer'

excel - Namespace().CopyHere...and...Namespace().items 上的 VBA 错误

转换为整数时的 C++ 短数组 'reversed'

c++ - 在非实例化函数模板中用作默认参数的不存在标识符

java - 如何在 java 中从 JSON 解析创建一个非静态列表?

Java:startingPath 为 "public static final"异常

使用 g++ 链接到 C++ dll 的 C++ 库

c++ - 填充 vector 时的效率