编译器预定义宏__GNUC__和_MSC_VER
来源:互联网 发布:失忆知乎 编辑:程序博客网 时间:2024/05/22 07:08
预定义宏__GNUC__和_MSC_VER
一、预定义__GNUC__宏
1 __GNUC__ 是gcc编译器编译代码时预定义的一个宏。需要针对gcc编写代码时, 可以使用该宏进行条件编译。
2 __GNUC__ 的值表示gcc的版本。需要针对gcc特定版本编写代码时,也可以使用该宏进行条件编译。
3 __GNUC__ 的类型是“int”,该宏被扩展后, 得到的是整数字面值。可以通过仅预处理,查看宏扩展后的文本。
示例:
#include <assert.h>
#include <stdio.h>
#include <typeinfo>
#ifndef __GNUC__
#error sample for gcc compiler
#else
/* use gcc special extension: #warning , __attribute__, etc. */
#endif
int main()
{
printf("hello gcc %d\n",__GNUC__);
assert( typeid(__GNUC__)==typeid(int) );
printf("press Enter to exit\n");
(void)getchar();
}
二、预定义_MSC_VER宏
1 _MSC_VER是微软C/C++编译器——cl.exe编译代码时预定义的一个宏。需要针对cl编写代码时, 可以使用该宏进行条件编译。
2 _MSC_VER的值表示cl的版本。需要针对cl特定版本编写代码时, 也可以使用该宏进行条件编译。
3 _MSC_VER的类型是"int"。该宏被扩展后,得到的是整数字面值。可以通过仅预处理, 查看宏扩展后的文本。
示例:
/* _MSC_VER\_MSC_VER.cpp */
#include <stdio.h>
#include <stdlib.h>
#include <typeinfo>
#define TO_LITERAL(text) TO_LITERAL_(text)
#define TO_LITERAL_(text) #text
#ifndef _MSC_VER
#error sample for msvc compiler
#else
/* use msvc special extension: #pragma message,__declspec,__stdcall,etc. */
#pragma message("----------------------------------------\n")
#pragma message("----------------------------------------\n")
#pragma message("---------- hello msvc " TO_LITERAL(_MSC_VER) " -------------")
#pragma message("\n----------------------------------------\n")
#pragma message("----------------------------------------\n")
extern __declspec(dllimport) void __stdcall declare_but_dont_reference(void);
#endif
int main()
{
printf("hello msvc, version=%d\n",_MSC_VER);
printf("typeof _MSC_VER=\"%s\"\n",typeid(_MSC_VER).name());
system("pause"); /* msvc only on windows? */
return 0;
}
转自:http://www.cnblogs.com/whiteyun/archive/2010/09/05/1818491.html
- 编译器预定义宏__GNUC__和_MSC_VER
- 预定义宏__GNUC__和_MSC_VER
- 预定义__GNUC__宏
- 预定义宏__GNUC__
- 预定义_MSC_VER宏
- 预定义宏 _MSC_VER
- _MSC_VER[Microsoft C/C++编译器版本预定义宏]
- gcc中预定义的宏__GNUC__
- 编译器预定义宏
- 编译器预定义宏
- 编译器版本宏_MSC_VER
- 查看编译器预定义宏
- 打印编译器预定义宏
- 编译器预定义宏概述
- 各个编译器预定义的表示编译器类型和版本号的宏
- ARM编译器中预定义的宏
- ARM编译器中预定义的宏
- 常用的 预定义宏(编译器)
- linux 下 svn用户权限
- CodeForces 405C Unusual Product
- string类(想要学好字符串,必须掌握string类)
- Java调用cmd命令 打开一个网站
- molu
- 编译器预定义宏__GNUC__和_MSC_VER
- intel sse 头文件
- Backbonejs入门教程第二版电子书
- 15.xcode 的 tab键的使用小技巧
- 董卿赴美李思思接棒?
- Uncaught TypeError: object is not a function
- 最大子段和
- js跳出Frame
- ios开发--沙盒