C 预处理器:如何禁用#error 宏?
C preprocessor: How can I disable #error macro?
我正在开发一个 C 语法分析程序。虽然 运行 C 预处理器,但有些库会检查环境并使用 #error
停止编译。我怎样才能禁用它们,因为我只需要完成预处理步骤?
为什么要禁用它们?他们正在输出错误并出于某种原因停止编译。我知道禁用它们的唯一方法是修改源代码并删除它们。
如果正在执行 #error
预处理器指令,则表示预处理已完成。
如果指令是有条件的(例如,仅当满足某些条件集时才会发出错误,例如在 #ifdef SOME_MACRO
- #endif
块中)那么避免它的方法是确保相关条件不成立。
在 #error
是无条件的(极其罕见的)情况下,可能是为了立即停止预处理。解决方案不是禁用它,而是避免它(例如,不是 #include
执行该操作的文件)而不是禁用它。
如果您只想 运行 预处理器,那么 #error
的存在没有任何区别。大多数编译器要么将预处理器作为单独的程序,要么有一个选项(例如 "gcc - E")导致编译在预处理阶段后停止。
我正在开发一个 C 语法分析程序。虽然 运行 C 预处理器,但有些库会检查环境并使用 #error
停止编译。我怎样才能禁用它们,因为我只需要完成预处理步骤?
为什么要禁用它们?他们正在输出错误并出于某种原因停止编译。我知道禁用它们的唯一方法是修改源代码并删除它们。
如果正在执行 #error
预处理器指令,则表示预处理已完成。
如果指令是有条件的(例如,仅当满足某些条件集时才会发出错误,例如在 #ifdef SOME_MACRO
- #endif
块中)那么避免它的方法是确保相关条件不成立。
在 #error
是无条件的(极其罕见的)情况下,可能是为了立即停止预处理。解决方案不是禁用它,而是避免它(例如,不是 #include
执行该操作的文件)而不是禁用它。
如果您只想 运行 预处理器,那么 #error
的存在没有任何区别。大多数编译器要么将预处理器作为单独的程序,要么有一个选项(例如 "gcc - E")导致编译在预处理阶段后停止。