[英]How does #error in C/C++ work?
我从#中猜测它只是一个编译时实用程序。 如何在C / C ++程序中使用它?
在互联网上找不到太多有关它的信息。 任何链接都将有所帮助。
它使编译器(或预处理器)输出错误消息。 在C ++中,它还会使翻译单元格式错误(即,导致编译失败)。
如果可以定义多个宏,并且要确保仅定义了它们的某些组合,则可以使用#error
如果定义了无效的组合,则会导致编译失败。
如果您要确保某些代码块永远不会编译(无论出于何种原因),它也很有用。
对检查编译器设置以及验证宏值组合很有用。 一些随机的例子:
#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
的其余行的标记用作错误消息。
另请参阅有关这些指令的可移植性的问题 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.