Chromium是一个伟大的、庞大的开源工程,很多值得我们学习的地方。
前面写道:
《跟Google学写代码–Chromium/base–stl_util源码学习及应用》
今天与大家分享的就是Chromium下base中的windows_version,对于你的win32应用程序一定会有很多的帮助。
1 定义version枚举
enum Version {
VERSION_PRE_XP = 0, // Not supported.
VERSION_XP,
VERSION_SERVER_2003, // Also includes XP Pro x64 and Server 2003 R2.
VERSION_VISTA, // Also includes Windows Server 2008.
VERSION_WIN7, // Also includes Windows Server 2008 R2.
VERSION_WIN8, // Also includes Windows Server 2012.
VERSION_WIN8_1, // Code named Windows Blue
VERSION_WIN_LAST, // Indicates error condition.
};
enum VersionType {
SUITE_HOME,
SUITE_PROFESSIONAL,
SUITE_SERVER,
SUITE_LAST,
};
2 定义 OSInfo类
a. 通过BASE_EXPORT定义为导出类
b. 将OSInfo()和 ~OSInfo()声明为私有,即我们要的单例模式
class BASE_EXPORT OSInfo {
public:
struct VersionNumber {
int major;
int minor;
int build;
};
struct ServicePack {
int major;
int minor;
};
enum WindowsArchitecture {
X86_ARCHITECTURE,
X64_ARCHITECTURE,
IA64_ARCHITECTURE,
OTHER_ARCHITECTURE,
};
enum WOW64Status {
WOW64_DISABLED,
WOW64_ENABLED,
WOW64_UNKNOWN,
};
static OSInfo* GetInstance();
Version version() const { return version_; }
VersionNumber version_number() const