我有一个 YACC (Bison) 语法、一个 Lex (Flex) 分词器和一个 C 程序,我需要在其中共享一个 struct
(或者实际上是任何变量)。目前,我在语法文件中声明实际对象,并在需要的任何地方(也就是说,我的 C 源文件)extern
它,通常使用指针来操作它。我在 C 文件和语法文件之间有一个共享头文件(和实现)文件,其中包含对操作我的数据结构有用的函数。这行得通,但感觉有点不舒服。有没有更好的方法在语法和程序之间共享内存?
最佳答案
在需要它的源文件之间共享 extern 声明的头文件通常是最好的方法。主要的替代方法是提供对其的“功能访问”——即某种“获取值”和“设置值”功能(或一组功能)。这通常是矫枉过正。确保在语法(定义变量的位置)以及词法分析器和其他代码中包含 header ,以便尽快发现不一致之处。
关于c - 在 YACC、Lex 和 C 文件之间共享内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2441192/