编译器,CPU和操作系统的宏
来源:互联网 发布:希特勒侄女知乎 编辑:程序博客网 时间:2024/05/17 03:51
编译器,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以上
#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
GUI App
#ifdef _WINDOWS
CUI App
#ifdef _CONSOLE
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
MFC App、PC机上(Windows CE没有定义)
#ifdef _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//Strmiids.lib")
#endif
#ifdef _MIPS_
#pragma comment (lib,".//lib//MIPSII//Strmiids.lib")
#endif
- 编译器,CPU和操作系统的宏
- 编译器、操作系统、CPU相关的预处理宏定义
- CPU位数、操作系统位数和编译器位数关系
- CPU位数、操作系统位数和编译器位数关系
- CPU位数、操作系统位数和编译器位数关系
- CPU位数、操作系统位数和编译器位数关系
- 操作系统和编译器宏定义
- 操作系统,CPU,编译器,运行时库,系统调用的关系 之 编译器篇
- 用宏区分操作系统和编译器
- 用宏区分操作系统和编译器
- 用宏区分操作系统和编译器
- 程序、编译器和操作系统
- cpu和操作系统的几种模式
- 32位与64位 CPU、编译器、操作系统、应用程序、arm和X86关系
- 区分各类编译器与操作系统的宏
- 区分各类编译器与操作系统的宏
- 32位与64位 CPU、编译器、操作系统与应用程序的区别
- cpu和操作系统32位和64位的含义
- iOS开发-ios7下拉刷新,上提加载快速集成
- Cookie
- 他山之石-Log4j原理
- SublimeText3自定义快捷键
- eclipse安装extjs插件
- 编译器,CPU和操作系统的宏
- ScrollView控件实现屏幕滚动
- 使用SqlConfigDataSource实现ODBC数据源配置
- Mysql 连接出错" unblock with ‘mysqladmin flush-hosts'"
- Java几个简单例子
- application activity生命周期
- 给iOS开发新手送点福利,简述UIScrollView的属性和用法
- 微商培训不会告诉你的10个秘密,来看真正的实战
- 2015/2/10换网小记