首页 > 编程笔记 > C语言笔记(精华版)

C语言#error指令的用法(非常详细,附带示例)

C语言 #error 是一个预处理指令,用于在编译期间产生错误信息,并阻止程序的编译。

#error 指令的用法如下:
#error error_message
其中error_message表示错误消息的具体内容,它是一段文本,不需要加引号。

当预处理器遇到 #error 指令时,会立即生成一条编译错误,并显示指定的错误内容,然后终止编译过程。

例如,我们的程序针对 Linux 编写,不保证兼容 Windows,那么可以这样做:
#ifdef WIN32
    #error This programme cannot compile at Windows Platform
#endif
WIN32 是 Windows 下的预定义宏。当用户在 Windows 下编译该程序时,由于定义了 WIN32 这个宏,所以会执行 #error 指令,提示用户发生了编译错误,错误信息是:

This programme cannot compile at Windows Platform

这和发生语法错误的效果是一样的,程序会编译失败,请看下面的截图:

VS2015 下的#error指令的错误信息
VS2015 下的错误信息

需要注意的是:报错信息不需要加引号" ",如果加上,引号会被一起输出。例如将上面的 #error 指令改为:
#error "This programme cannot compile at Windows Platform"
那么错误信息如下:

#error 指令的引号也会被一起输出

再如,当我们希望以 C++ 的方式来编译程序时,可以这样做:
#ifndef __cplusplus
    #error 当前程序必须以C++方式编译
#endif
虽然 C++ 几乎完全兼容C语言,但还是有细微的差别,有时候我们希望以 C++ 而不是C语言的方式来编译代码。当编译器处理 C++ 代码时,会定义__cplusplus宏,如果检测到这个宏不存在,说明不是以 C++ 方式编译的,此时程序就会报错。

相关文章