因此,给定一个typedef
来定义具有如下参数名称的函数指针:
typedef void(*FOO)(const int arg);
有没有一种方法可以仅使用此函数指针来定义函数的签名?显然这是行不通的,但我想以某种方式使用typedef
来指定具有相应类型的函数签名:
FOO foo {
cout << arg << endl;
}
同样,我知道这行不通,并且语法错误。它只会给出错误:
错误:在此范围内未声明
arg
答案 0 :(得分:2)
您尝试执行的操作将不起作用。 FOO
是void(*)(const int)
的别名。所以
FOO foo {
cout << arg << endl;
}
成为
void(*)(const int) foo {
cout << arg << endl;
}
那是行不通的。但是,您可以做的是定义一个带有名称的宏,并使用该宏标记出函数签名。看起来像
#define MAKE_FUNCTION(NAME) void NAME(const int arg)
MAKE_FUNCTION(foo){ std::cout << arg * 5 << "\n"; }
MAKE_FUNCTION(bar){ std::cout << arg * 10 << "\n"; }
int main()
{
foo(1);
bar(2);
}
答案 1 :(得分:1)
函数指针的定义与声明或函数的定义均无关,因此答案是否定的。