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
的其余行的标记用作错误消息。
另请参阅有关这些指令的可移植性的问题 。