这个声明 typedef void foo(); 是什么意思?

15

我不理解 typedef void interrupt_handler(); 的含义,请问能否举一些例子进行解释?

typedef void interrupt_handler();
2个回答

19

这意味着interrupt_handler是函数类型的别名,它返回void并且不指定其参数(也就是所谓的旧式声明)。请看以下示例,其中foo_ptr被用作函数指针(这是一种特殊情况,括号不是必需的):

#include <stdio.h>

typedef void interrupt_handler();

void foo()
{
    printf("foo\n");
}

int main(void)
{
    void (*foo_ptr_ordinary)() = foo;
    interrupt_handler *foo_ptr = foo; // no need for parantheses

    foo_ptr_ordinary();
    foo_ptr();

    return 0;
}

我有这个函数void cpu_boot(uint cores, interrupt_handler bootfunc, uint serialno),在参数bootfunc中,我想传递以下参数:Task boot_task、int argl、void* args。Task是typedef int (* Task)(int, void*)类型。我该如何实现它?类似包装函数的东西吗?@cmbasnett - Lefteris Sarantaris
@LefterisSarantaris:我宁愿提出单独的问题。不要忘记描述你已经尝试过什么,解释你的问题并添加一些最小的示例。 - Grzegorz Szpetkowski

9
这是一个使用特定签名(在本例中为无参数且返回void的函数)的函数指针typedef声明。
请参见C++委托是什么?(顶部答案,选项3)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接