VS 预定义宏

  编译器可识别六种预定义的ANSI C宏(参见表1.1),而Microsoft C++实现提供更多的预定义宏(参见表1.2)。这些宏不带参量,但不能被重定义。它们的值(除__LINE_ _和_ _FILE_ _外)必须是经过编译的常量。下面列出的一些预定义宏须用多个值来定义,它们的值可在Visual C++开发环境中选择相应的菜单选项来设置或采用命令行开关。更多的信息参见下表。

表1.1 ANSI 预定义宏

宏 说明

__DATE _ _当前源文件的编译日期。日期是格式为Mmm dd yyyy的字符串文字。月份名称Mmm与在TIME.H中说明的库函数asctime产生的日期一样

__FILE_ _ 当前源文件名称。__FILE_ _扩展为用双引号括起的一个字符串

__LINE_ _ 当前源文件的行号。该行号是一个十进制整型常量。可用一个#line指令修改

__STDC_ _ 指出与ANSI C标准的完全一致性。仅当给出/Za编译器选项且不编译C++代码时定义为整型量1;否则是不确定的

__TIME_ _ 当前文件的最近编译时间。该时间是格式为hh:mm:ss的字符串文字

__TIMESTAMP_ _ 当前源文件的最近修改日期。日期是格式为Ddd Mmm Datehh:mm:ss yyyy的字符串文字,这里Ddd是星期几的简写,Date是从1到31的一个整数表

表1.2 Microsoft特殊预定义的宏

宏 说明

__CHAR_UNSIGNED 缺省char类型是无符号的,当指定/J时定义的

__cplusplus 仅为C++程序定义

__CPPRTTI 定义为用/GR编译的代码(允许运行时类型信息)

__CPPUNWIND 定义为用/GX编译的代码(允许异常处理)

__DLL 指定/MD或/MDd(多线程DLL)时定义的

__M_ALPHA 为DEC ALPHA平台定义,使用ALPHA编译器时定义为1,若使用另一个编译器时不定义

__M_IX86 为x86处理器定义,参见表1.3

__M_MPPC 为Power Macintosh平台定义,缺省为601(/QP601)参见表1.4

__M_MRX000 为MIPS平台定义,缺省为4000(/QMR4000),参见表1.5

__M_PPC 为PowerPC平台定义,缺省为604(/QP604),参见表1.6__MFC_VER为MFC版本定义,为Microsoft Founndation类库4.21定义为0x0421,它总是定义的

__MSC_EXTENSIONS 该宏在使用/Ze编译选项(缺省值)时定义,定义时其值总为1

__MSC_VER 定义编译器版本,对于Microsoft Visual C++ 6.0定义为1200,它总是定义的

__MT 当指定/MD或/MDd(多线程DLL)或/MT或/MTd(多线程)选项时定义

__WIN32 为Win32应用程序而定义。它总是定义的

如下表所示,编译器对反映处理器选项的预处理器标识符产生一个值。

表1.3 _M_IX86的值

开发者的选项 命令行选项 返回值

Blend /GB _M_IX86=500(缺省值。将来的编译器将给出一个不同的值以影响主处理器)

Pentium /G5 _M_IX86=500

Pentiumpro /G6 _M_IX86=600

80386 /G3 _M_IX86=300

80486 /G4 _M_IX86=400

表1.4 _M_MPPC的值

开发者的选项 命令行选项 返回值

PowerPC 601 /QP601 _M_MPPC=601(缺省值)

PowerPC 603 /QP603 _M_MPPC=603

PowerPC 604 /QP604 _M_MPPC=604

PowerPC 620 /QP620 _M_MPPC=620

表1.5 _M_MRX000的值

开发者选项 命令行选项 返回值

R4000 /QMR4000 _M_MRX000=4000(缺省值)

R4100 /QMR4100 _M_MRX000=4100

R4200 /QMR4200 _M_MRX000=4200

R4400 /QMR4400 _M_MRX000=4400

R4600 /QMR4600 _M_MRX000=4600

R10000 /QMR10000 _M_MRX000=10000

表1.6 _M_PPC的值

开发者选项 命令行选项 返回值

R4000 /QMR4000 _M_MRX000=4000(缺省值)

R4100 /QMR4100 _M_MRX000=4100

R4200 /QMR4200 _M_MRX000=4200

R4400 /QMR4400 _M_MRX000=4400

R4600 /QMR4600 _M_MRX000=4600

R10000 /QMR10000 _M_MRX000=10000

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值