对Passing array of functions as argument to function的扩展问题。
我想将一组函数(带有自己的参数)作为参数传递给另一个函数。
简单地说,不是使它们无效,而是向它们添加参数。
从上述问题中借来的代码:
char *howdy(void) { return "howdy"; }
char *goodbye(void) { return "goodbye"; }
typedef char *(*Charpfunc)(void);
void print(Charpfunc *p)
{
while (*p) {
puts((*p)());
p++;
}
}
int main()
{
Charpfunc funcs[] = {
hello, howdy, goodbye, NULL
};
print(funcs);
return 0;
}
我尝试了显而易见的解决方案,但无法使其正常工作。 最常见的错误是:typedef被初始化(改为使用decltype)或从一种类型转换为另一种类型。
答案 0 :(得分:0)
我不确定您的问题中的“(带有自己的论点)” 到底是什么意思。
您是否正在寻找类似的东西?
['First Floor 1085 s.f.', '\nSecond Floor 587 s.f.', '\nPorches 393 s.f.', '\nCovered Parking 642 s.f.', '\nStorage 187 s.f.', '\nUnder Roof 2894 s.f.']
或者类似这样的东西:
#include <stdio.h>
char* howdy(int arg) { printf(">howdy: arg = %d\n", arg); return "howdy"; }
char* goodbye(int arg) { printf(">goodbye: arg = %d\n", arg); return "goodbye"; }
typedef char* (*Charpfunc)(int arg);
void print(Charpfunc* p, int arg)
{
while (*p) {
puts((*p)(arg));
p++;
}
}
int main()
{
Charpfunc funcs[] = {
howdy, goodbye, NULL
};
print(funcs, 111);
print(funcs, 222);
return 0;
}