Flex-lexer:使用“%option debug”与定义“FLEX_DEBUG”相同

Flex-lexer: Is using `%option debug` the same as defining `FLEX_DEBUG`

当我的 *.l 文件 运行 flex %option debug 时,我在生成的扫描仪文件中看到 #define FLEX_DEBUG

使用 %option debug 和通过将 -DFLEX_DEBUG 传递给 gcc 来定义 FLEX_DEBUG 之间有什么区别吗?

与当前版本的flex没有区别。 %option debug 所做的唯一一件事就是将 #define FLEX_DEBUG 插入到输出文件中。如果在 flex 命令行上指定了 -d--debug,也会执行此操作。

但是,有一个重要区别:FLEX_DEBUG 宏没有记录,因此不能保证该行为不会随着未来版本的变化而改变。 (这与记录在案的 yacc/bison YYDEBUG 宏不同。)