如何调用指向typedef结构中定义的函数的指针

以下代码有什么问题?
下面的parseCounter1()和parseCounter1()是两个函数。
我把他们的指针放在const OptionValueStruct
当option_values []的每个元素都可以相应调用它们
经历了:

 typedef struct OptionValueStruct{ char counter_name[OPTION_LINE_SIZE]; int* counter_func; } OptionValueStruct_t; const OptionValueStruct option_values[] = { {"Counter1", (*parseCounter1)(char*, char**)}, {"Counter2", (*parseCounter2)(char*, char**)}, }; const OptionValueStruct *option = NULL; for(int i = 0; icounter_func(opt_name, opt_val); } 

您已经将counter_func成员声明为指向int的指针,而不是函数指针,而在option values有类似函数指针声明的内容。 这是你想要的(假设你的返回类型是int)

 typedef struct OptionValueStruct{ char counter_name[OPTION_LINE_SIZE]; int (*counter_func)(char*, char**); } OptionValueStruct_t; const OptionValueStruct_t option_values[] = { {"Counter1", parseCounter1}, {"Counter2", parseCounter2}, }; for(int i = 0; i< sizeof(option_values)/sizeof(OptionValueStruct_t); i++){ result = option_values[i]->counter_func(opt_name, opt_val); // don't know what you relly want to do with result further on.. } 

如果您正在编译为C代码(如标记所示),那么您应该将option_values[]的类型和OptionValueStruct_t option更改。 但是,在C ++中,这没关系。

或者,您可以从自定义类型名称中删除尾随_t