首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C++中运行时获取当前操作系统

在C++中运行时获取当前操作系统
EN

Stack Overflow用户
提问于 2010-06-17 23:29:03
回答 8查看 35.7K关注 0票数 27

在运行时,我需要弄清楚我的程序运行在哪个操作系统上。

我使用的是Qt 4.6.2,MinGW和Eclipse with CDT。我的程序应该在Windows或Linux上运行命令行QProcess。现在我需要一种开关来根据操作系统运行不同的代码。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-12-19 09:25:30

实际上操作系统是由Q_OS_定义的……宏。只是说说而已。Q_WS_...都是窗口系统。并不完全一样。(我只是在读问题的作者写的东西……“操作系统”。)

这些声明可以在qglobal.h文件中找到。

代码语言:javascript
复制
Use Q_OS_x with x being one of:

 DARWIN   - Darwin OS (synonym for Q_OS_MAC)
 SYMBIAN  - Symbian
 MSDOS    - MS-DOS and Windows
 OS2      - OS/2
 OS2EMX   - XFree86 on OS/2 (not PM)
 WIN32    - Win32 (Windows 2000/XP/Vista/7 and Windows Server 2003/2008)
 WINCE    - WinCE (Windows CE 5.0)
 CYGWIN   - Cygwin
 SOLARIS  - Sun Solaris
 HPUX     - HP-UX
 ULTRIX   - DEC Ultrix
 LINUX    - Linux
 FREEBSD  - FreeBSD
 NETBSD   - NetBSD
 OPENBSD  - OpenBSD
 BSDI     - BSD/OS
 IRIX     - SGI Irix
 OSF      - HP Tru64 UNIX
 SCO      - SCO OpenServer 5
 UNIXWARE - UnixWare 7, Open UNIX 8
 AIX      - AIX
 HURD     - GNU Hurd
 DGUX     - DG/UX
 RELIANT  - Reliant UNIX
 DYNIX    - DYNIX/ptx
 QNX      - QNX
 QNX6     - QNX RTP 6.1
 LYNX     - LynxOS
 BSD4     - Any BSD 4.4 system
 UNIX     - Any UNIX BSD/SYSV system

窗口系统定义如下:

代码语言:javascript
复制
Use Q_WS_x where x is one of:

 MACX     - Mac OS X
 MAC9     - Mac OS 9
 QWS      - Qt for Embedded Linux
 WIN32    - Windows
 X11      - X Window System
 S60      - Symbian S60
 PM       - unsupported
 WIN16    - unsupported

使用#ifdef的主要问题之一是确保如果你在一个“新”平台上编译(从未在那个平台上编译过那个软件),那么你想要使用#elif defined(...)和至少一个#else + #error……

代码语言:javascript
复制
#ifdef Q_OS_LINUX
  std::cout << "Linux version";
#elif defined(Q_OS_CYGWIN)
  std::cout << "Cygwin version";
#else
#error "We don't support that version yet..."
#endif
票数 24
EN

Stack Overflow用户

发布于 2010-06-17 23:35:59

在Qt中,为编译时选项定义了以下OS宏

//之前定义了Qt5 Qt/X11 = Q_WS_X11。

定义了Qt/Windows = Q_WS_WIN。

Qt/Mac = Q_WS_MACX已定义

//对于Qt5以后的版本,定义了Qt/X11 = Q_OS_X11。

定义了Qt/Windows = Q_OS_WIN。

Qt/Mac = Q_OS_MACX已定义

然后,QSysInfo类在运行时为您提供操作系统版本和其他选项。

票数 24
EN

Stack Overflow用户

发布于 2010-06-17 23:37:01

如果你真的需要在运行时实现这一点,Qt提供了QSysInfo。对于附加到崩溃报告很有用,但对于其他任何情况,请尝试在编译时执行此操作。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3063110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档