采用宏来定义编译器
Ⅰ 如何在C语言中用宏来判断当前编译器
1、_MSC_VER 是微软C/C++编译器——cl.exe 编译代码时预定义的一个宏。需
要针对cl 编写代码时, 可以使用该宏进行条件编译。
2、_MSC_VER 的值表示cl 的版本。需要针对cl 特定版本编写代码时, 也可以使用
该宏进行条件编译。
3、_MSC_VER 的类型是"int",具体版本号定义如下:
MS VC++ 9.0 _MSC_VER = 1500
MS VC++ 8.0 _MSC_VER = 1400
MS VC++ 7.1 _MSC_VER = 1310
MS VC++ 7.0 _MSC_VER = 1300
MS VC++ 6.0 _MSC_VER = 1200
MS VC++ 5.0 _MSC_VER = 1100
其中MS VC++ 9.0 就是Visual C++ 2008,MS VC++ 8.0 就是Visual C++2005。
二、介绍预定义宏“__GNUC__”
1、__GNUC__ 是gcc 编译器编译代码时预定义的一个宏。需要针对gcc 编写代码时,
可以使用该宏进行条件编译。
2、__GNUC__ 的值表示gcc 的版本。需要针对gcc 特定版本编写代码时,也可以使
用该宏进行条件编译。
3、__GNUC__ 的类型是“int”
三、预定义宏"__MINGW32__"
1、MinGW编译器
四、symbian sdk 预定义宏:
symbian 平台,定义"__SYMBIAN32_"
3rd MR 版及之前的那个3rd 版本,定义"__SERIES60_30__"
3rd FP1 版,定义"__SERIES60_31__"
3rd FP2 版,定义"__SERIES60_32__"
另外,还有一个"__SERIES60_3x__"。若不需区分具体是哪一个3rd 版,则用之。
Ⅱ 什么是宏定义
宏定义是高级语言编译器提供的常用语法,其目的是利用某一标识符标识某个文本字符串。在编写程序时,如果程序中反复地使用某个数据或某段程序片段,就可以考虑将这个数据或程序片段定义为宏,然后每个出现该数据或程序片段的地方用宏名替代
选拆胡择宏定义来做的好处是程序简洁,可读性好,而且当需要修改这些相同的程序片段时,只要修改宏定义中的字符串即可,不需要修改多处。
(2)采用宏来定义编译器扩展阅读:
参宏定义中#的用法:
#defineSTR(str) #str
#用于把宏定义中的参数两端加上字符串的""
比如,这里STR(my#name)会被替换成"my#name",一般由任意字符都可以做形参,但以下情况会出错:
STR())这样,编译器不会把")"当成STR()的参数。STR(,)同上,编译器不会把","当成STR的参数。STR(A,B)如果实参过敏御扒多,则编译器会桥昌把多余的参数舍去。
(VC++2008为例)STR((A,B))会被解读为实参为:(A,B),而不是被解读为两个实参,第一个是(A第二个是B)。