我在许多C++代码库中看到了一种通用模式:

Header.h:

static const int myConstant = 1;

Source1.cpp:
#include "Header.h"

Source2.cpp:
#include "Header.h"

基于:



...



...


myConstant仅可从同一翻译单元访问,并且编译器将生成它的多个实例,每个包含Header.h的翻译单元一个。

我的理解正确吗-创建了myConstant的多个实例?如果是这种情况,可以请我指出在C++中使用常量的更好的选择

编辑:

有人建议在 header 中创建myConstant extern并将其定义在一个cpp文件中。这是一个好习惯吗?我猜测,这将使编译器看不到该值并阻止许多优化,例如,当该值出现在算术运算中时。

最佳答案

你在做什么应该没问题。只要您从不使用变量的地址(例如&myConstant),优化器可能会避免为常量创建任何存储,而是将其替换为该值。

关于c++ - 如何在C++中正确定义常量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45160517/

10-11 22:49
查看更多