pycparser如何读取C代码文件中包含的头文件?

3 投票
1 回答
1467 浏览
提问于 2025-04-18 14:45

我正在尝试使用pycparser解析一个C语言文件。我想知道在预处理这个C文件时,pycparser是否只会读取你在假库文件夹中提供的那些库文件(如果你在cpp_args中提供了假库的路径),还是也会从包含语句中提到的位置读取,比如下面这一行:

#include<folder1/folder2/xyz.h>  

那么,pycparser会在哪里查找xyz.h?它只会在假库文件夹中查找吗?

1 个回答

3

它会搜索除了假文件夹以外的其他目录。如果你查看文件 pycparser/__init__.py,你会发现一个叫 preprocess_file 的函数,它会对你的输入文件进行C语言的预处理,然后把处理后的结果放在一个字符串里,再传给下一个叫 parse_file 的函数。这两个函数里的代码都写得比较清楚,还有注释,所以你可以看看,看看是否能理解。

这个假文件夹只是为了标准库的头文件,比如 stdlib.hstdio.h 等等。这些头文件通常包含一些特定于编译器的扩展,不一定能在所有地方都用;你只需要知道有一个函数 printf(...),就可以解析你的代码了。

撰写回答