use*_*517 1 c function-pointers
以下代码有什么问题?
下面的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; i< sizeof(option_values)/sizeof(OptionValueStruct_t); i++){
option = option_values + i ;
result = option->counter_func(opt_name, opt_val);
}
Run Code Online (Sandbox Code Playgroud)
你已经声明你的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..
}
Run Code Online (Sandbox Code Playgroud)