我有一个 lex 输入 .l 文件,其中包含一堆规则和遇到这些规则时的函数定义。
我正在使用来自另一个源文件 main.c 的扫描仪
在 main.c 中,我可以调用 yylex() 而无需对我生成的 lex 文件进行任何类型的引用。为什么这行得通?我正在使用 cmake,我注意到它从我的 lexer.c 文件中创建了一个对象,并将其链接到我的可执行文件。我原以为我需要对 yylex() 的外部引用才能使其正常工作。
我的问题是我是否应该为我在 lex .l 文件中使用的所有函数创建前向声明,并将其包含在 lex 文件中?更进一步,我是否应该在 lex 文件之外定义这些函数,并通过引用包含文件的方式使用它们?