如何确定我在 MacOSX 中运行的硬件

How to determine which hardware I'm running on in MacOSX

本文关键字:运行 硬件 MacOSX 何确定      更新时间:2023-10-16

我一直在写一段代码,其中包含只有在Macbook、Macbook Pro或Macbook Air上运行时才能执行的部分。

到目前为止,我使用的是Targetconditionals.h,但我只能验证我没有使用此策略在手机上运行,并且我的代码一直在iMac和MacMini上执行。

你们有没有任何关于如何获得一些特定信息的提示,只有当程序在Macbook、Macbook Pro或Macbook Air中运行时,这些信息才会匹配?

在这里,我终于得到了一些可能对类似情况下的其他人有所提示的东西:

#include <string>
#include <sys/sysctl.h>

bool isMacBook()
{
    size_t len = 0;
    ::sysctlbyname("hw.model", nullptr, &len, nullptr, 0);
    std::string model(len, '');
    ::sysctlbyname("hw.model", const_cast<char *>(model.data()), &len, nullptr, 0);
    return model.find("MacBook") != std::string::npos;
}

我不认为这是一个完整的修复,但在我看来,它可以提供有用的信息。