#error预编译指令

预处理指令#error多用于检查编译时的错误,可以提供一种编译时报错机制。

当预处理器预处理到#error命令时将停止编译并输出用户自定义的错误消息。

格式如下:token-string是用户自定义的错误消息。

#error token-string 

通常#error用于检查比较严重的错误,影响到实际代码模块的编译。比如需要使用C++编译器,可用如下判断:

#if !defined(__cplusplus)
#error C++ compiler required.
#endif

需要使用VS编译器,可以使用如下宏判断

#ifndef _MSC_VER
#error require visual studio compiler
#endif

其中_MSC_VER表示vs编译器版本号,是vs定义的宏。具体函数如下:

MS VC++ 12.0 _MSC_VER = 1800 (Visual C++ 2013)

MS VC++ 11.0 _MSC_VER = 1700 (Visual C++ 2012)

MS VC++ 10.0 _MSC_VER = 1600(Visual C++ 2010)

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

时间: 2024-10-12 08:39:17

#error预编译指令的相关文章

C/C++预编译指令

编译程序时,只要遇到 #error 就会跳出一个编译错误,既然是编译错误,要它干嘛呢?其目的就是保证程序是按照你所设想的那样进行编译的. 下面举个例子: 程序中往往有很多的预处理指令 #ifdef XXX ... #else #endif 当程序比较大时,往往有些宏定义是在外部指定的(如makefile),或是在系统头文件中指定的,当你不太确定当前是否定义了 XXX 时,就可以改成如下这样进行编译: #ifdef XXX ... #error "XXX has been defined"

c/c++中的预编译指令总结

预处理指令提供按条件跳过源文件中的节.报告错误和警告条件,以及描绘源代码的不同区域的能力.使用术语“预处理指令”只是为了与 C 和 C++ 编程语言保持一致.在 C# 中没有单独的预处理步骤:预处理指令按词法分析阶段的一部分处理. 预处理器的主要作用就是把通过预处理的内建功能对一个资源进行等价替换,最常见的预处理有:文件包含,条件编译.布局控制和宏替换4种. 文件包含:#include 是一种最为常见的预处理,主要是做为文件的引用组合源程序正文. 条件编译:#if,#ifndef,#ifdef,

驱动中的宏定义及预编译指令

驱动代码与平时的Win32代码有一些区别,在学习内核编程之前,简单了解一下,以后阅读代码会轻松一些. 首先是参数说明宏,一般都是空宏,例如 #define IN#define OUT 这样来看,IN和OUT都被定义成了空,注意,这儿的空即什么也没有,不同于NULL或者VOID.只要不与变量等连在一起,他们出现在代码的任何地方都没有关系 . 只是函数的一个说明,提高程序的可读性, NTSTATUS ZwQueryInformationFile( _In_  HANDLE              

C/C++中的预编译指令

工作中遇到的: 一个头文件中的: #pragma warning(disable:4996)#pragma warning(disable:4244)#pragma warning(disable:4267) 不理解意思,遂查? C/C++中的预编译指令 程序的编译过程可以分为预处理.编译.汇编三部分,其中预处理是首先执行的过程,预处理过程扫描程序源代码,对其进行初步的转换,产生新的源代码提供给编译器.预处理过程读入源代码之后,会检查代码里包含的预处理指令,完成诸如包含其他源文件.定义宏.根据条

iOS中的预编译指令的初步探究

看到非常好的两篇技术文,转来方便自己查看. 转自:http://www.cnblogs.com/daiweilai/p/4234336.html 开篇 我们人类创造东西的时候有个词叫做”仿生学“!人类创造什么东西都会模仿自己来创造,所以上帝没有长成树的样子而和人长得一样,科幻片里面外星人也像人一样有眼睛有鼻子……但是人类自己创造的东西如果太像自己,自己又会吓尿(恐怖谷效应),人类真是奇葩:奇葩的我们在20世纪创造了改变世界的东西——计算机(电脑),不用怀疑,这货当然也是仿生学!这货哪里长得像人了

几个预编译指令的用法

转载:痴 狼While there is life there is hope http://www.cnblogs.com/Bolin/archive/2011/02/20/1959120.html 几个预编译指令的用法    预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器.可见预处理过程先于编译器对源代码进行处理.在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件.定义宏.根据条件决定编译时是否包含某些代码.要完成这些工作,就需要使用预处理程序.

蓝欧培训--lessonc12[枚举,位运算符,预编译指令,const]

////  main.m//  lessonc12////  Created by 张阳帅 on 15-1-6.//  Copyright (c) 2015年 张阳帅. All rights reserved.// #import <Foundation/Foundation.h> #define kDeBug //当一个变量只有固定几个取值的时候,可以定义一个枚举类型//枚举类型声明了一组常数,将人能看懂的标示符和计算机能看懂的数字建立对应关系//如果枚举类型不指定常数,默认从0开始, 依次

C#中的预编译指令介绍

原文:C#中的预编译指令介绍 1.#define和#undef 用法: #define DEBUG #undef DEBUG #define告诉编译器,我定义了一个DEBUG的一个符号,他类似一个变量,但是它没有具体的值,可以将它看为一个符号而已.#undef就是删除这个符号的定义.如果符号DEBUG没定义过,则#undef不起作用,否则#define不起作用.二者都必须放在源代码之前.二者的顺序看代码的顺序: #define DEBUG #undef  DEBUG 这样的话,DEBUG是没有定

iOS中的预编译指令

iOS中的预编译指令的初步探究 目录[+] 开篇 我们人类创造东西的时候有个词叫做”仿生学“!人类创造什么东西都会模仿自己来创造,所以上帝没有长成树的样子而和人长得一样,科幻片里面外星人也像人一样有眼睛有鼻子……但是人类自己创造的东西如果太像自己,自己又会吓尿(恐怖谷效应),人类真是奇葩:奇葩的我们在20世纪创造了改变世界的东西——计算机(电脑),不用怀疑,这货当然也是仿生学!这货哪里长得像人了??别不服,先听我说完,先把你的砖头放下.狭义的仿生学是外形上仿生嘛,其实广义上仿生学还可以原理的仿生