最近正在學習C++程式從 Windows 平台向 Unix 平台移植,參考了 qt 的宏定義檔案
Win Unix Mac 等多種系統平台的宏定義,平台移植時可做參考
#ifndef QGLOBAL_H<br />#define QGLOBAL_H</p><p>#define QT_VERSION_STR "3.1.2"<br />/*<br /> QT_VERSION is (major << 16) + (minor << 8) + patch.<br /> */<br />#define QT_VERSION 0x030102</p><p>/*<br /> The operating system, must be one of: (Q_OS_x)</p><p> MACX- Mac OS X<br /> MAC9- Mac OS 9<br /> MSDOS- MS-DOS and Windows<br /> OS2- OS/2<br /> OS2EMX- XFree86 on OS/2 (not PM)<br /> WIN32- Win32 (Windows 95/98/ME and Windows NT/2000/XP)<br /> CYGWIN- Cygwin<br /> SOLARIS- Sun Solaris<br /> HPUX- HP-UX<br /> ULTRIX- DEC Ultrix<br /> LINUX- Linux<br /> FREEBSD- FreeBSD<br /> NETBSD- NetBSD<br /> OPENBSD- OpenBSD<br /> BSDI- BSD/OS<br /> IRIX- SGI Irix<br /> OSF- HP Tru64 UNIX<br /> SCO- SCO OpenServer 5<br /> UNIXWARE- UnixWare 7, Open UNIX 8<br /> AIX- AIX<br /> HURD- GNU Hurd<br /> DGUX- DG/UX<br /> RELIANT- Reliant UNIX<br /> DYNIX- DYNIX/ptx<br /> QNX- QNX<br /> QNX6- QNX RTP 6.1<br /> LYNX- LynxOS<br /> BSD4- Any BSD 4.4 system<br /> UNIX- Any UNIX BSD/SYSV system<br />*/</p><p>#if defined(__APPLE__) && defined(__GNUC__)<br /># define Q_OS_MACX<br />#elif defined(__MACOSX__)<br /># define Q_OS_MACX<br />#elif defined(macintosh)<br /># define Q_OS_MAC9<br />#elif defined(__CYGWIN__)<br /># define Q_OS_CYGWIN<br />#elif defined(MSDOS) || defined(_MSDOS)<br /># define Q_OS_MSDOS<br />#elif defined(__OS2__)<br /># if defined(__EMX__)<br /># define Q_OS_OS2EMX<br /># else<br /># define Q_OS_OS2<br /># endif<br />#elif !defined(SAG_COM) && (defined(WIN64) || defined(_WIN64) || defined(__WIN64__))<br /># define Q_OS_WIN32<br /># define Q_OS_WIN64<br />#elif !defined(SAG_COM) && (defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__))<br /># define Q_OS_WIN32<br />#elif defined(__MWERKS__) && defined(__INTEL__)<br /># define Q_OS_WIN32<br />#elif defined(__sun) || defined(sun)<br /># define Q_OS_SOLARIS<br />#elif defined(hpux) || defined(__hpux)<br /># define Q_OS_HPUX<br />#elif defined(__ultrix) || defined(ultrix)<br /># define Q_OS_ULTRIX<br />#elif defined(sinix)<br /># define Q_OS_RELIANT<br />#elif defined(__linux__) || defined(__linux)<br /># define Q_OS_LINUX<br />#elif defined(__FreeBSD__)<br /># define Q_OS_FREEBSD<br /># define Q_OS_BSD4<br />#elif defined(__NetBSD__)<br /># define Q_OS_NETBSD<br /># define Q_OS_BSD4<br />#elif defined(__OpenBSD__)<br /># define Q_OS_OPENBSD<br /># define Q_OS_BSD4<br />#elif defined(__bsdi__)<br /># define Q_OS_BSDI<br /># define Q_OS_BSD4<br />#elif defined(__sgi)<br /># define Q_OS_IRIX<br />#elif defined(__osf__)<br /># define Q_OS_OSF<br />#elif defined(_AIX)<br /># define Q_OS_AIX<br />#elif defined(__Lynx__)<br /># define Q_OS_LYNX<br />#elif defined(__GNU_HURD__)<br /># define Q_OS_HURD<br />#elif defined(__DGUX__)<br /># define Q_OS_DGUX<br />#elif defined(__QNXNTO__)<br /># define Q_OS_QNX6<br />#elif defined(__QNX__)<br /># define Q_OS_QNX<br />#elif defined(_SEQUENT_)<br /># define Q_OS_DYNIX<br />#elif defined(_SCO_DS) /* SCO OpenServer 5 + GCC */<br /># define Q_OS_SCO<br />#elif defined(__USLC__) /* all SCO platforms + UDK or OUDK */<br /># define Q_OS_UNIXWARE<br /># define Q_OS_UNIXWARE7<br />#elif defined(__svr4__) && defined(i386) /* Open UNIX 8 + GCC */<br /># define Q_OS_UNIXWARE<br /># define Q_OS_UNIXWARE7<br />#else<br /># error "Qt has not been ported to this OS - talk to qt-bugs@trolltech.com"<br />#endif</p><p>#if defined(Q_OS_MAC9) || defined(Q_OS_MACX)<br /># define Q_OS_MAC<br />#endif</p><p>#if defined(Q_OS_MAC9) || defined(Q_OS_MSDOS) || defined(Q_OS_OS2) || defined(Q_OS_WIN32) || defined(Q_OS_WIN64)<br /># undef Q_OS_UNIX<br />#elif !defined(Q_OS_UNIX)<br /># define Q_OS_UNIX<br />#endif
===================================================================
拓展參考:
qglobal.h中可以得到的資訊