c++ - 匿名命名空间中的 const 与 static const

标签 c++ qt static linker

我希望能够为类提供默认名称,以便在记录错误时始终可以使用合理的名称。我不需要(或不希望)这个名字成为类本身的一部分。这个默认名称永远不会改变,因此很适合成为 const 甚至 constexpr 但你不能做 constexpr QStringconstexpr std::string 无论出于何种原因。

在我的cpp文件中,这样做更好吗

namespace {
 const QString NAME("Some Name");
}

namespace {
 static const QString NAME("Some Name");
}

我知道这两个版本都会导致 NAME 具有内部链接,但最佳做法是什么?我看过一些关于将全局变量移动到匿名命名空间的讨论,但没有一个提到在命名空间内使用 static

引用资料:

最佳答案

static 在匿名命名空间中是完全多余的。它什么都不做

将其排除在外,因为它只会在该上下文中增加噪音和额外的输入。 像 clang-tidy 这样的工具甚至会生成一个关于它是多余的警告(取决于使用的选项),所以将它排除在外也可以减少工具的噪音。

关于c++ - 匿名命名空间中的 const 与 static const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58630567/

相关文章:

php - PHP 5.3 之前的静态继承

c++ - 这个for循环在做什么?

c++ - 如何在 C++ 中生成的随机数应用程序中不重复数字?

c++ - QList 什么时候发生深拷贝?

qt - 使用 QT 支持构建 OpenCV 时未解析的符号 QMetaObject

java - 为什么有时检测不到这些隐藏的静态方法?

java - 如何调用 UsbDevice.getDeviceName() 方法 - 没有错误(无法从静态上下文引用)

c++ - DirectX 11 延迟渲染

c++ - 使用 std::nth_element 时,第 n 个元素的拷贝是否总是连续的?

Python - pyqt5 - 将文本设置为不同颜色的 qtextbrowser