如何解析C头文件?

22 投票
4 回答
39654 浏览
提问于 2025-04-15 17:18

有没有人知道怎么在Python中使用C语言的头文件?举个例子,我有一个C程序,它里面包含了一个全局变量:

typedef struct ImageInfo
{
    uint8_t revisionMajor;
    uint8_t revisionMinor;
    uint16_t checksum;    

} ImageInfo;

ImageInfo gImageInfo;   /* Placed at a specific address by the linker */

我想用Python脚本来读取C编译器生成的二进制文件,并且可能还想对这个结构进行修改。

4 个回答

9

看看这个 pygccxml。我用它来构建我C/C++源代码的内存图,这样我就可以用它来做很多代码生成的工作。

顺便说一句:我刚开始学习用Python生成代码的时候,实际上试着自己写一个解析器:省省你的力气,别去碰这个!(不过看起来你已经知道了...) pygccxml就是你想要的一切,甚至更多 :)

31

昨天在StackOverflow上提到过这个,我还没来得及仔细看看,但我打算去了解一下。pycparser是一个用Python写的“C语言解析器和抽象语法树生成器”。

https://github.com/eliben/pycparser

17

你可以看看这个用Python写的C++头文件解析器,地址在这里:http://sourceforge.net/projects/cppheaderparser/。你也可以使用以下这些工具自己写一个解析器:

撰写回答