我想在 python 中编写一个好的调用图程序,因此我使用 pycparser。Pycparser 需要预处理 c 文件才能正确创建抽象语法树。我的第一种方法是仅在-E
文件上使用 gcc 选项,然后将其传递给 pycparser。但是对于不同的项目,我会得到“ No such file or directory
”错误,因为 gcc 没有找到特定的标头。如果我尝试用它来预处理 linux 内核,gcc -E `find | grep "\.c"\`
它会丢失一些头文件,比如那些带有 Linux/ 前缀的头文件,因为没有这样的文件夹。在我看来,我需要一些额外的标志来让 gcc 传递头文件的位置并正确预处理。是否有一种预处理任意 C 项目的通用方法?
另外,我想如果我让它正确预处理,那么不同文件中有相同函数的多个副本。有没有办法确定函数的原始文件?