#define DEBUG #ifdef DEBUG #error "麻烦大了哈,亲" #endif #include <iostream> #include <windows.h> using namespace std; void main() { system("pause"); };
编译结果: 编译失败
1>------ 已启动生成: 项目: test, 配置: Debug Win32 ------
1> main.cpp
1>e:\program\test\test\main.cpp(84): fatal error C1189: #error: "麻烦大了哈,亲"
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
//
//
//
预处理器标识#error的目的是什么 - z507263441的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/z507263441/article/details/20211299
编译程序时,只要遇到 #error 就会跳出一个编译错误,既然是编译错误,要它干嘛呢?其目的就是保证程序是按照你所设想的那样进行编译的。
下面举个例子:
程序中往往有很多的预处理指令
#ifdef XXX
...
#else
#endif
当程序比较大时,往往有些宏定义是在外部指定的(如makefile),或是在系统头文件中指定的,当你不太确定当前是否定义了 XXX 时,就可以改成如下这样进行编译:
#ifdef XXX
...
#error "XXX has been defined"
#else
#endif
这样,如果编译时出现错误,输出了XXX has been defined,表明宏XXX已经被定义了。