初始化全局常量变量是否安全?定义?

问题描述:

我可以初始化全局变量并在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) 
+0

是的,你可以做到这一点。但是,为什么不为DEFAULT_WIDTH和DEFAULT_HEIGHT使用'const double'变量呢? –

+0

@ M.M这些是别人的旧代码,我讨厌这样的代码。但有很多这样的用法。 –

+0

技巧问题 - 你不能初始化一个定义。 – immibis

我认为这取决于你的funcion CHelper::GetSystemDPI(); 如果此功能不引用任何其他全球varialbe或其他一些问题也应该没问题。

C++不保证全局变量对不同编译单元的初始化顺序。

涉及到may-i-initialize-a-global-variable-with-the-result-of-a-function-call