为了在 flex 和其他版本的 lex 之间获得更多的兼容性,我们应该在 flex 命令中添加 -l
选项。其中一个不兼容性是 yylineno
(用于存储行号的全局变量)。虽然有两种方法可以激活此选项:
使用 %option yylineno
或-l选项
我总是有这种警告:
warning C4102: 'find_rule' : unreferenced label
请提供任何帮助以避免此警告!
由于您说触发警告的代码是自动生成的并且不能由您控制,因此消除警告的唯一方法是仅针对该代码抑制它。您有两个选择。
选项一是更改特定文件的编译器设置(不是最好的维护方式)。
选项 2 是 #include
.c 文件到另一个文件中,并将其包装到 #pragma warning
中:
//WrapperGateFile.c
#pragma warning(push)
#pragma warning(disable: 4102)
#include "ProblematicFile.c"
#pragma warning(pop)
并且(重要!)要么不将有问题的 .c 文件包含到项目中,要么从构建中排除原始 .c 文件(“从构建中排除”属性),这样它就不会被编译和链接两次。
我是一名优秀的程序员,十分优秀!