初始化全局常量变量是否安全?定义?
问题描述:
我可以初始化全局变量并在C++中定义如下代码吗? 如果不是,你能解释详细的原因吗?初始化全局常量变量是否安全?定义?
我负责很多旧的代码,有很多这样写的代码片段。我应该如何安全地重建它们?
// initialize the global variable with the result from a function call
const double g_dbScale = CHelper::GetSystemDPI();
#define DEFAULT_WIDTH (500 * g_dbScale)
#define DEFAULT_HEIGHT (200 * g_dbScale)
答
我认为这取决于你的funcion CHelper::GetSystemDPI();
如果此功能不引用任何其他全球varialbe或其他一些问题也应该没问题。
C++不保证全局变量对不同编译单元的初始化顺序。
涉及到may-i-initialize-a-global-variable-with-the-result-of-a-function-call
是的,你可以做到这一点。但是,为什么不为DEFAULT_WIDTH和DEFAULT_HEIGHT使用'const double'变量呢? –
@ M.M这些是别人的旧代码,我讨厌这样的代码。但有很多这样的用法。 –
技巧问题 - 你不能初始化一个定义。 – immibis