gpt4 book ai didi

c - 以编程方式获取函数名称

转载 作者:太空宇宙 更新时间:2023-11-04 02:56:12 27 4
gpt4 key购买 nike

我正在构建一个使用大量函数指针的构建,其中的 struct 大致如下所示:

struct functionArray {
void (*func)(void);
} funcarray[20] = {
func1,
func2,
func3,
func4
};

其中 func1func2、... 和 func20 在名为 functions.c 的文件中

我希望能够在构建期间执行此操作。例如,如果我改用宏:

funcarray[20] = {
FUNCTION_LIST
};

我可以用生成的头文件来做到这一点。有点像:

// testheader.h.in
#define FUNCTION_LIST @functions_in_file@

无论如何我可以做到这一点吗?我知道我可以来回编辑文件,但这是我第二次或第三次这样做。我查看了 [cmake 引用资料][1],没有看到任何让我印象深刻的内容。我能否以某种方式使用 objdumpnm 将函数名称通过管道传输到 cmake 文件?

编辑:

.o 文件中获取函数名应该也可以。我猜它没有理由成为 .c 文件。

最佳答案

好的,这是一种方法。生成目标文件functions.o然后使用

nm functions.o | awk '/[0-9a-f]+ T / { print $3 "," }' > function_list.h

像这样的代码

struct functionArray {
void (*func)(void);
} funcarray[20] = {
#include "function_list.h"
};

然后您应该能够整合它。请注意,此处“functions.o”中的函数数量需要恰好为 20。

关于c - 以编程方式获取函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17077534/

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