我有一个lex输入.l文件,其中包含一组规则和函数定义,以便在遇到这些规则时使用。我应该为lex函数创建一个头文件吗?
我使用来自另一个源文件这款扫描仪,main.c中
main.c中,我可以调用函数yylex(),而不必有什么样的基准来我生成的文件法。为什么这个工作?我正在使用cmake,并且我注意到它从我的lexer.c文件中创建了一个对象,并将其链接到我的可执行文件。我原以为我需要一个外部参考yylex(),但为了工作。
我的问题是我应该为我在lex .l文件中使用的所有函数在单独的头文件中创建前向声明,并将其包含在lex文件中?更进一步,我应该在lex文件之外定义这些函数,并通过引用include文件来使用它们吗?
您应该启用警告并关注任何和所有编译器消息。编译器会告诉你在哪里丢失了哪些声明。通常,您定义的任何可公开访问的函数都应该在某个头文件中声明,并且该头文件应该包含在使用该函数的任何文件中。 – 2013-03-22 23:01:02