c - 在 YACC、Lex 和 C 文件之间共享内存

标签 c bison yacc lex flex-lexer

我有一个 YACC (Bison) 语法、一个 Lex (Flex) 分词器和一个 C 程序,我需要在其中共享一个 struct(或者实际上是任何变量)。目前,我在语法文件中声明实际对象,并在需要的任何地方(也就是说,我的 C 源文件)extern 它,通常使用指针来操作它。我在 C 文件和语法文件之间有一个共享头文件(和实现)文件,其中包含对操作我的数据结构有用的函数。这行得通,但感觉有点不舒服。有没有更好的方法在语法和程序之间共享内存?

最佳答案

在需要它的源文件之间共享 extern 声明的头文件通常是最好的方法。主要的替代方法是提供对其的“功能访问”——即某种“获取值”和“设置值”功能(或一组功能)。这通常是矫枉过正。确保在语法(定义变量的位置)以及词法分析器和其他代码中包含 header ,以便尽快发现不一致之处。

关于c - 在 YACC、Lex 和 C 文件之间共享内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2441192/

相关文章:

java - Bison/Java 中类型的自动对话

parsing - 使用 prolog 构建解析树

yacc - %prec '.' 在 yacc 中是什么意思?

makefile - make file : yacc command not found and [y. tab.c] 安装 Bison 后出现错误 127

python - PLY/YACC解析PDF上的冲突

c++ - 显式设置指针的值

c - C 结构数组

bison - 获取 : warning, 规则无法匹配

c - 返回指针数组的指针

c++ - C 套接字 : Echo server bad reply