我不确定我是否理解,因为即使您使用 Qt(或任何其他 x 平台框架),也没有什么能阻止您使用特定于平台的功能。您只需针对您希望支持的不同平台将这些特定功能分隔在不同的编译单元中。仅此而已。
名义上,您在头文件中定义一个接口/类,然后您可以在多个不同的主体文件中实现该接口/类,每个文件都包含特定平台的实现,例如 Win32/Mac OS X /Linux。
头文件中的fi(.h文件):
class MyXPlatformClass {
public:
static std::string getMachineName();
}
然后在 cpp 文件中实现这个“接口”:
赢32:
std::string MyXPlatformClass::getMachineName() {
char buffer[256];
GetComputerNameA(buffer, sizeof(buffer));
return buffer;
}
Mac OS X(和 Linux?):
std::string MyXPlatformClass::getMachineName() {
char buffer[256];
gethostname(&buffer, sizeof(buffer));
return buffer;
}
这就是跨平台编码的完成方式,与您选择使用的框架无关。不过我推荐 Qt,因为它相当“完整”,这意味着它拥有几乎所有不需要使用平台特定代码的工具。但是如果你需要它,你可以使用上面的方法。