我有两个看起来像这样的函数:
void init_analysis(){
yyin = stdin;
flag_console = TRUE;
line = 1;
yypush_buffer_state(yy_create_buffer( yyin, YY_BUF_SIZE ));
}
void terminate_analysis(){
yypop_buffer_state();
}
它们位于一个名为lex.l的文件中,当使用命令'flex lex.l'对其进行编译时,该文件将生成一个名为lex.yy.c的文件。我要做的是在文件lex.l之外的文件lex.l中声明并实现这两个函数,例如,utilities.c及其对应的Utility.h。问题是我无法将这两个函数移动到另一个文件,因为它们具有诸如yypop_buffer_state和数据类型如YY_BUFFER_STATE的功能,这些功能未在新文件中定义,因此我想移动这些功能(这些元素仅在lex.yy.c中定义文件)。如何移动这些功能? 谢谢您的回答。
答案 0 :(得分:1)
根据flex的文档,您可以在运行flex时使用以下参数
--header-file=my_flex_header_file.h
会生成一个头文件,您可以将其包含在其他文件中。