編譯器,CPU和作業系統的巨集

2022-05-13 03:40:49 字數 2510 閱讀 1631

編譯器

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...