pycparser如何读取C代码文件中包含的头文件?
我正在尝试使用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.h
、stdio.h
等等。这些头文件通常包含一些特定于编译器的扩展,不一定能在所有地方都用;你只需要知道有一个函数 printf(...)
,就可以解析你的代码了。