C预处理器:如何禁用#error宏?

时间:2016-01-10 03:14:24

标签: c compiler-errors macros

我正在研究C语法分析程序。在运行C预处理器时,有一些库检查环境并使用#error来停止编译。如何禁用它们,因为我只需要预处理步骤即可完成?

2 个答案:

答案 0 :(得分:2)

为什么要禁用它们?他们输出错误并因某种原因停止编译。我知道禁用它们的唯一方法是修改源代码并将其删除。

答案 1 :(得分:0)

如果正在执行#error预处理程序指令,则表示预处理已完成。

如果指令是有条件的(例如,只有满足某些条件时才会发出错误,例如在#ifdef SOME_MACRO - #endif块中),那么避免它的方法是确保相关条件不正确。

在{极为罕见的情况} #error是无条件的,那么可能意图是立即停止预处理。而不是禁用它,解决方案是避免它(例如,不#include执行该操作的文件)不禁用它。

如果您只想运行预处理器,那么#error的存在没有任何区别。大多数编译器要么将预处理器作为单独的程序,要么有一个选项(例如“gcc -E”),导致编译在预处理阶段后停止。