我从#猜测它只是一个编译时实用工具。如何在C / C ++程序中使用它?
在互联网上没有找到太多关于它的信息。任何链接都会有所帮助。
答案 0 :(得分:15)
它会导致编译器(或预处理器)输出错误消息。在C ++中,它还使翻译单元格式不正确(即,它导致编译失败)。
如果您有几个可以定义的宏,并且您希望确定只定义了它们的某些组合,则可以使用#error
来导致编译失败,如果定义了无效组合。
如果你想确保永远不会编译某些代码块(无论出于何种原因),它也会很有用。
答案 1 :(得分:11)
用于检查编译器设置以及验证宏值组合。一些随机的例子:
#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
答案 2 :(得分:3)
以下是Gnu预处理器文档的链接,用于解释#error
和#warning
指令:http://gcc.gnu.org/onlinedocs/cpp/Diagnostics.html
特别是:
指令
#error
导致 预处理器报告致命错误。 形成其余部分的代币#error
后面的行被用作 错误信息。
另见this question关于这些指令的可移植性。