如何填写全局变量而不在主程序流中调用它?

时间:2016-02-07 08:47:37

标签: c++

我喜欢这个可以访问的库,而不必先显式地初始化它,这就是我尝试的内容:

#pragma once
#include <Windows.h>

struct SysInfoClass {
    DWORD granB;
    SysInfoClass() {
        SYSTEM_INFO siSysInfo;
        GetSystemInfo(&siSysInfo);
        granB = siSysInfo.dwAllocationGranularity;
    }
};

SysInfoClass SysInfo();

好的,这似乎很好。我希望这可以在程序main函数执行之前创建SysInfoClass的实例,这样我就可以在任何地方使用auto x = SysInfo.granB,但它不起作用。我可以为事物分配SysInfo,但我无法访问其任何成员,为什么会这样?

2 个答案:

答案 0 :(得分:3)

您遇到语法错误 而不是

SysInfoClass SysInfo();

你需要写

SysInfoClass SysInfo;

编写它的方式,编译器认为它是一个函数声明。

答案 1 :(得分:-1)

将全局变量转换为独立函数中的static局部变量,该函数返回对变量的引用。

SysInfoClass& SysInfo()
{
    static SysInfoClass sys_info;
    return sys_info;
}