【发布时间】:2021-11-18 02:48:41
【问题描述】:
我编写了一个使用 const 全局变量的程序,我想知道是否可以通过在全局范围内、任何其他函数之外以及 main() 或 WinMain( )。它是这样的:
#include "stdafx.h"
#include <iostream>
#include "windows.h"
const int i_HRes = GetSystemMetrics(SM_CXSCREEN);
int main()
{ std::cout << "Horizontal screen resolution: " << i_HRes << std::endl;
std::cin.ignore();
return 0;
}
它编译和运行没有错误,但我想知道在全局范围内调用 API 函数是否会导致消费者软件的某个地方出现问题。
【问题讨论】:
-
视情况而定。例如,如果您的模块是 DLL,则调用将从 DllMain 内部进行,这通常是不允许的。
-
标准 C++ 中没有任何内容可以阻止在文件范围内使用函数调用的结果初始化
const。如果变量在 DLL 中,事情会更复杂——但其细节超出了标准 C++ 的范围。