gpt4 book ai didi

c - 通过使用函数指针与可变参数列表函数接口(interface)

转载 作者:太空宇宙 更新时间:2023-11-04 02:34:50 26 4
gpt4 key购买 nike

我正在尝试使用另一个程序的接口(interface),我必须在其中使用以下方法:

void iterate_over_entries(Table* table, Func_ptr f, ... )

所以该函数被设计为在每个表条目上调用用户定义的函数 f()。

函数指针定义为:

typedef size_t (*Func_ptr) (char* example, va_list args);

那么这意味着我必须编写一个 Func_ptr 类型的函数来操作表的条目?

例如,假设我想要什么 - 将所有长度低于给定字符串的字符串设置为“a”。那么,我必须将长度放入这个 va_list 中吗?

size_t my_method(char* example, va_list args) {

int length = va_arg(args, int);

if (strlen(example) < length) strncpy(example, "a\0", 2);

return 1;
}

所以,如果到目前为止我所做的一切都是正确的,我只需要调用该函数,但我不知道该怎么做。假设我希望命令行输入设置我允许的长度...

 int main(int argc, char** argv){ 

Table* table; //this is set somehow..

int length = atoi(argv[1]);

size_t (*method)(char* example, va_list list);
method = &my_method;

}

那么我现在如何告诉程序使用 my_method 调用 iterate_over_entries,其中输入的长度...:S

最佳答案

只是调用它:

int main(int argc, char** argv){ 

Table* table; //this is set somehow..

int length = atoi(argv[1]);

Func_ptr method;
method = &my_method;
iterate_over_entries(table, method, length);

}

无需将my_method赋值给其他变量,直接传递即可。

    iterate_over_entries(table, my_method, length);

关于c - 通过使用函数指针与可变参数列表函数接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38965634/

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