編譯器gcc
#ifdef __gnuc__
#if __gnuc__ >= 3 // gcc3.0以上
visual c++
#ifdef _msc_ver(非vc編譯器很多地方也有定義)
#if _msc_ver >=1000 // vc++4.0以上
#if _msc_ver >=1100 // vc++5.0以上
#if _msc_ver >=1200 // vc++6.0以上
#if _msc_ver >=1300 // vc2003以上
#if _msc_ver >=1400 // vc2005以上
borland c++
#ifdef __borlandc__
unix
unix
#ifdef __unix
or #ifdef __unix__
linux
#ifdef __linux
or #ifdef __linux__
freebsd
#ifdef __freebsd__
netbsd
#ifdef __netbsd__
windows
32bit
#ifdef _win32(或者win32)
64bit
#ifdef _win64
windows的ver … winver
pc機windows(95/98/me/nt/2000/xp/vista)和windows ce都定義了
#if (winver >= 0x030a) // windows 3.1以上
#if (winver >= 0x0400) // windows 95/nt 4.0以上
#if (winver >= 0x0410) // windows 98以上
#if (winver >= 0x0500) // windows me/2000以上
#if (winver >= 0x0501) // windows xp以上
#if (winver >= 0x0600) // windows vista以上
windows 95/98/me的ver … _win32_windows
#if (_win32_windows >= 0x0400) // windows 95以上
#if (_win32_windows >= 0x0410) // windows 98以上
#if (_win32_windows >= 0x0500) // windows me以上
windows nt 的ver … _win32_winnt
#if (_win32_winnt >= 0x0500) // windows 2000以上
#if (_win32_winnt >= 0x0501) // windows xp以上
#if (_win32_winnt >= 0x0600) // windows vista以上
windows ce(pocketpc )
#ifdef _win32_wce
windows ce … winceosver
windows ce
wce_if
int ernet explorer的ver … _win32_ie
cygwin
cygwin
#ifdef __cygwin__
32bit版cygwin(現在好像還沒有64bit版)
#ifdef __cygwin32__
mingw(-mno-cygwin指定)
#ifdef __mingw32__
相信很多人都有這麼乙個經歷,想巨集定義某乙個值,而這個值隨著編譯器選擇的cpu不同而有所不同,但卻苦於文件中沒有關於cpu巨集的說明.所以很多朋友的做法往往做法是自定以多個巨集用來區分cpu的型別.其實大可不必,編譯器在cpu不同時確實定義了相應的巨集,只不過這個在文件中沒有說明而已.
cpu type macro
x86 _x86_
mips _mips_
arm _arm_
sh3 _sh3_
根據不同的cpu定義不同的巨集數值,**可如此書寫:
#ifdef _x86_
#define reg_num 8
#endif
#ifdef _mips_
#define reg_num 12
#endif
其實最為實用的,還是根據不同的cpu型別選擇不同的lib庫鏈結,例如:
#ifdef _x86_
#pragma comment (lib,".//lib//x86em")
#endif
#ifdef _mips_
#pragma comment (lib,".//lib//mipsii")
#endif
編譯器,CPU和作業系統的巨集
編譯器 gcc ifdef gnuc if gnuc 3 gcc3.0以上 visual c ifdef msc ver 非vc編譯器很多地方也有定義 if msc ver 1000 vc 4.0以上 if msc ver 1100 vc 5.0以上 if msc ver 1200 vc 6.0以上...
用巨集區分作業系統和編譯器
編碼的時候經常要用到條件編譯,每次都到網上去查比較浪費時間,今天總結一下以備後用 visual c ifdef msc ver 非vc編譯器很多地方也有定義 borland c ifdef borlandc unix windows windows 95 98 me的ver win32 window...
用巨集區分作業系統和編譯器
編碼的時候經常要用到條件編譯,每次都到網上去查比較浪費時間,今天總結一下以備後用 visual c ifdef msc ver 非vc編譯器很多地方也有定義 borland c ifdef borlandc unix windows windows 95 98 me的ver win32 window...