gpt4 book ai didi

c - 有没有解析c头文件并从c头文件中提取函数原型(prototype)的工具

转载 作者:太空狗 更新时间:2023-10-29 17:17:29 25 4
gpt4 key购买 nike

特别是获取函数返回类型(如果可能,是否是指针类型)。

(我正在尝试编写 ioctl/dlsym 包装器库的自动生成(将被 LD_PRELOAD 编辑))。首选 python 或 ruby​​ 库,但欢迎任何可行的解决方案。

最佳答案

我已经成功使用了 Haskells Language.C来自 hackage 的包(Haskells 对 CPAN 的回答)来做类似的事情。它将为您提供 C(或头)文件的完整解析树,然后可以遍历该文件以提取所需的信息。它应该 AFAIK 也适用于 #includes #defines 等等。

恐怕我没有安装相关的软件来测试它,但它会是这样的:

handler (DeclEvent (Declaration d)) =
do
let (VarDecl varName declAttr t) = getVarDecl d
case t of
(FunctionType (FunType returnType params isVaradic attrs)) ->
do {- varName RETURNS returnType .... -}
_ -> do return ()
return ()
handler _ =
do return ()

main = do
let compiler = newGCC "gcc"
ast <- parseCFile compiler Nothing opts cFileName
case (runTrav newState (withExtDeclHandler (analyseAST ast) handler)) of
...

上面的内容可能看起来很吓人,但您可能不需要那么多行 Haskell 代码来完成您想要的事情!如果有任何帮助,我很乐意分享我使用的完整源代码(约 200 行)。

关于c - 有没有解析c头文件并从c头文件中提取函数原型(prototype)的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6289950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com