在这两个预处理器代码中,它们的区别是什么以及它们是如何使用的?
#error "¡ERROR GRAVISIMO!"
#warning "ABC está obsoleto. Use XYZ en su lugar."
答案 0 :(得分:0)
#error
用于创建错误,从而使程序无法编译。 #warning
生成编译器警告,但不会阻止程序编译。以下两个屏幕截图说明了:
错误:
警告:
请注意,在第一种情况下,构建失败,在第二种情况下,构建成功完成。
当你想在某些条件下保持程序编译时,使用 #error
,通常是因为程序无法正常工作,如果程序应该能够编译,则使用#warning
但可能无法正常工作,您希望帮助用户了解原因。
如果程序是在C ++模式而不是C模式下编译的,则以下示例会产生错误或警告。请注意,C ++编译器会自动创建宏__cplusplus
。
错误:
#ifdef __cplusplus
#error This program isn't compatible with C++!
#endif
警告:
#ifdef __cplusplus
#warning You are compiling this as a C++ program, but it's recommended to compile it as a C program.
#endif
第一个代码用于不支持C ++的程序,第二个代码用于可能在C ++中有奇怪行为但仍然支持它的程序。这些当然只是如何使用#error
和#warning
的示例。