gpt4 book ai didi

c - 在 C 中初始化函数指针

转载 作者:太空狗 更新时间:2023-10-29 14:53:18 26 4
gpt4 key购买 nike

我有这个功能

uint8_t Authorization_getRole (char const* userId, UsertoRole_T const *roleTable)

在主程序中我有:

given_Role = Authorization_getRole (userId, roleTable)

我想用函数指针替换函数调用:

uint8_t (*getRole_ptr)()

given_Role = &getRole_ptr;

我的问题是:

我在哪里初始化函数指针 getRole_ptr?

如何初始化函数指针?

下面的语法正确吗?

getRole_ptr = Authorization_getRole (userId, roleTable)

最佳答案

我总是推荐带有函数指针的 typedef。然后,你会写:

// Make sure to get the function's signature right here
typedef uint8_t (*GetRole_Ptr_T)(char const*, UsertoRole_T const*);

// Now initialize your pointer:
GetRole_Ptr_T getRole_ptr = Authorization_getRole;

// To invoke the function pointed to:
given_Role = getRole_ptr(userId, roleTable);

关于“我在哪里初始化函数指针 getRole_ptr?”:取决于您的要求。您可以在声明指针时这样做,就像我在我的示例中所做的那样,或者您可以稍后通过分配给它来更改指针:

getRole_ptr = Some_function_with_correct_signature;

关于c - 在 C 中初始化函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23269710/

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