C / C ++中的#error如何工作?

我从#猜测它只是一个编译时实用程序。 如何在C / C ++程序中使用它?

在互联网上找不到太多。 任何链接都会有所帮助。

它会导致编译器(或预处理器)输出错误消息。 在C ++中,它还使翻译单元格式不正确(即,它导致编译失败)。

如果您有几个可以定义的宏,并且您希望确定只定义了它们的某些组合,则可以使用#error在定义了无效组合时导致编译失败。

如果你想确保永远不会编译某些代码块(无论出于何种原因),它也会很有用。

用于检查编译器设置以及validation宏值组合。 一些随机的例子:

 #if !defined(_DLL) # error This code will only work properly when compiled with /MD #endif #if _WIN32_WINNT < 0x502 # error Sorry, Windows versions prior to XP SP2 are not supported #endif #if defined(_APPLE) && defined(_LINUX) # error Conflicting operating system option selected, choose one. #endif 

以下是Gnu预处理器文档的链接,解释了#error#warning指令: http : //gcc.gnu.org/onlinedocs/cpp/Diagnostics.html

特别是:

指令#error导致预处理器报告致命错误。 形成#error的其余行的标记用作错误消息。

另请参阅有关这些指令的可移植性的问题 。