GLib 是否可以进行操作系统检测?

CYB*_*B3R 3 cross-platform glib vala os-detection

是否可以确定我的 Vala 应用程序在哪个平台(GNU/Linux、Win32、OS X)上运行?

Jen*_*off 5

由于 Vala 是一种编译语言(与中间语言或解释语言相反),您可以使用您最喜欢的构建工具并使用条件编译来确定平台。

就像是:

#if WINDOWS
    message ("Running on Windows");
#elif OSX
    message ("Running on OS X");
#elif LINUX
    message ("Running on GNU/Linux");
#elif POSIX
    message ("Running on other POSIX system");
#else
    message ("Running on unknown OS");
#endif
Run Code Online (Sandbox Code Playgroud)

构建工具必须将-D LINUX等传递给编译器。

我会很小心,只在万不得已时才做这样的事情,因为它可能适得其反。通常最好使用已经为您处理差异的跨平台库。

顺便说一句:另请参阅如何在 C++ 中完成此操作