gpt4 book ai didi

c++ - 如何将函数指针转换为函数名?

转载 作者:行者123 更新时间:2023-11-30 00:35:27 25 4
gpt4 key购买 nike

我有一组具有相同功能的函数:

func_pointer_t func_array[] = {func_1, func_2, func_3, ...};

我想开发一个程序,遍历数组成员并将输出转储到另一个.dat 数据文件。输出应具有以下格式:

func_1 func_1_output
func_2 func_2_output
func_3 func_3_output
...

所以我的问题是 - 当遍历数组成员时,我们如何让程序知道函数指针指向哪个函数名(例如 func_array[0] 指向 func_1)?

最佳答案

没有标准的方法来归档您要查找的内容。所有可能的解决方案要么涉及系统相关的方法来将函数地址解析为其名称(甚至不一定总是有效),要么像这样更改 func_array:

struct {
func_pointer_t func;
const char * name;
} func_array[] = {
{ func_1, "func_1" },
{ func_2, "func_2" },
{ func_3, "func_3" },
...
};

您可以使用宏来简化工作:

#define FUNC_DEF(func) { func, #func },

然后像这样使用它:

struct {
func_pointer_t func;
const char * name;
} func_array[] = {
FUNC_DEF(func_1)
FUNC_DEF(func_2)
FUNC_DEF(func_3)
...
};

因此,如果这是您的选择,那么您就有了解决方案。如果不是,您必须说明您的目标系统是什么。

存在更多 C++ 风格的解决方案 - 如 Govind Parmar 暗示的 std::map 解决方案,您可以在其中迭代并获取键 <-> 值对。

关于c++ - 如何将函数指针转换为函数名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40706805/

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