【发布时间】:2021-02-12 18:46:09
【问题描述】:
我有一个头文件,其中包含我正在制作的 DLL 中需要的所有 const 值,例如:
// myHelpers.hpp
const int kMaxNumVoices = 16;
const int kMaxBeats = 32;
....
等等。在每个 .cpp 中包含 .hpp 后,我也可以在 std::array 定义中使用这些常量。
问题(理论上)是这将违反ODR,因为每个编译单元都会使用每个 var 的副本(即使它们是 const),对吧?
这可以接受吗?或者可以处理一些未定义的行为?如果它不可接受,那么正确的方法是什么?
【问题讨论】:
-
timsong-cpp.github.io/cppwp/n4659/basic.link#3.2 - 内部链接。 ODR 不适用。
标签: c++ c++11 constants global one-definition-rule