预处理程序指令#error和#warning之间的区别

时间:2017-02-14 02:22:57

标签: c compiler-errors c-preprocessor compiler-warnings

在这两个预处理器代码中,它们的区别是什么以及它们是如何使用的?

#error "¡ERROR GRAVISIMO!"

#warning "ABC está obsoleto. Use XYZ en su lugar."

1 个答案:

答案 0 :(得分:0)

#error用于创建错误,从而使程序无法编译。 #warning生成编译器警告,但不会阻止程序编译。以下两个屏幕截图说明了:

错误:

enter image description here

警告:

enter image description here

请注意,在第一种情况下,构建失败,在第二种情况下,构建成功完成。

当你想在某些条件下保持程序编译时,使用

#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的示例。