列出 C 语言中所有可用的函数

List all available Functions in C

提问人:BPP-DEV 提问时间:9/22/2023 更新时间:9/22/2023 访问量:73

问:

我想为另一种编程语言创建绑定,由于有数百个函数,我想知道如何通过自动化来提高效率。

这意味着我想要一个头文件中所有函数的列表,其中包含数据类型和返回类型,如下所示:

void myfunction1(int)
void myfubction2()
void myfunction3(string, string)
....

我已将“glad.h”(仅标头库)导入到我的 Main 中。不幸的是,这个库只绑定了系统函数,这意味着我无法从头文件中提取它们。现在我想知道是否有可以在 Main 中调用的 C 函数,它为我提供了我想要的东西,即所有当前导入函数的列表,如所述。

有没有办法做到这一点,例如使用 relection 或 sth。

我试图找出一个解决方案+我试图从文档中给chatgpt一个html列表,以提取func名称,但该列表没有定义()和returntype,这意味着我会手动复制数百个函数,看看它们采用什么类型和参数......等等。

C 反射 自动化 仅标头

评论

3赞 BoP 9/22/2023
C 绝对没有反射,所以不能这样做。如果另一种语言恰好是 Ada,而您使用 gcc,编译器可能会通过了解这两种语言来帮助您。如果没有,你可能不走运。

答:

0赞 Misha T 9/22/2023 #1

如果你有 Doxygen 生成的 doumentation URL,你可以使用脚本:

mkdir tmp;
cd tmp;
wget -r <Documentation URL Root> -L <Documentation URL Root>;
for F in $(find . -name \*.html); do  cat $F | grep '<tr class="memitem:' | sed -e 's/<tr[^>]*>//g' | sed -e 's/&nbsp;/ /g' | sed -e 's/&#160;/ /g' | sed -e 's/<td[^>]*>//g' | sed -e 's/<a[^>]*>//g' | sed -e 's/<\/tr>//g' | sed -e 's/<\/td>//g' | sed -e 's/<\/a>//g' | sed -e 's/$/;/' | egrep  '\(.*\)' >> library_functions.h; done

您不会通过此脚本获取类型定义,并且会有一些垃圾

针对 libnl 进行了测试,网址:http://www.infradead.org/~tgr/libnl/doc/api/