c# 如何避免在将函数指针作为参数的函数的定义中提及函数指针的参数?

ghhkc1vu  于 2023-06-27  发布在  C#
关注(0)|答案(1)|浏览(272)

我写的这个C代码涉及到传递很多函数指针,有时在定义一个函数时,写一个函数指针作为参数的所有参数,这会显著增加函数定义的长度,从而降低其可读性。例如,假设我有一个函数foo,它需要三个int和一个函数指针来执行某个操作。声明像foo这样的函数的典型方法是:

int foo(int a, int b, int c, int (*operation) (int, int, int));

我想知道是否有一种方法可以避免在函数指针的类型中再次提及变量类型的冗余。
this question的回答表明,可以只使用空括号(),在上面的例子中翻译为:

int foo(int a, int b, int c, int (*operation) ());

然而,同一篇文章的评论指出,这种语法将在C23中删除:
顺便说一下,这是自1989年以来过时的C。不应使用空括号()无原型样式。它最终将在即将到来的C23中被删除

pxq42qpu

pxq42qpu1#

所以,就做一个化名。我喜欢函数别名而不是函数指针别名,这样我就知道它是一个指针。

typedef int operation_t(int, int, int);
int foo(int a, int b, int c, operation_t *operation);

相关问题