gpt4 book ai didi

C中 union 成员的条件替换

转载 作者:太空宇宙 更新时间:2023-11-04 04:36:04 25 4
gpt4 key购买 nike

我有

typedef union 
{
void (*fp1p)(void);
void (*fp2p)(uint32_t);
void (*fp3p)(uint32_t, uint32_t);
void (*fp4p)(uint32_t, uint32_t, uint32_t);
uint32_t (*fp5p)(uint32_t);
uint32_t (*fp6p)(uint32_t, uint32_t);
uint32_t (*fp7p)(uint32_t, uint32_t, uint32_t);
} fp;
struct command
{
char *name; //command name
uint32_t minargs;
uint32_t maxargs;
int minval;
int maxval;
fp read_func_pointer;
fp write_func_pointer;
};

struct command commands[] =
{
[0] = { "reg1001", 0,0,0,0, .read_func_pointer.fp6p = TDC1000_SPIByteReadReg, .write_func_pointer.fp4p = TDC1000_SPIByteWriteReg },
//
//
};

然后

if(condition)
{
uint32_t ret_val = commands[0].read_func_pointer.fp6p(…);
}
else
{
commands[0]. write_func_pointer.fp6p(…);
}

我怎样才能使它成为通用的而不是 .fp6p?

最佳答案

我不知道这是否适合您,但是向您的结构添加一个表示函数指针类型的枚举怎么样?

在条件语句中,您可以打开枚举,然后调用正确的函数指针。

关于C中 union 成员的条件替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30475051/

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