这个声明是啥 typedef void foo();意思是? [关闭]

Posted

技术标签:

【中文标题】这个声明是啥 typedef void foo();意思是? [关闭]【英文标题】:What does this declaration typedef void foo(); mean? [closed]这个声明是什么 typedef void foo();意思是? [关闭] 【发布时间】:2015-02-13 01:04:54 【问题描述】:

我不明白typedef void interrupt_handler(); 的含义。有人可以举一些例子来解释吗?

typedef void interrupt_handler();

【问题讨论】:

【参考方案1】:

这意味着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。任务类型为 typedef int (* Task)(int, void*);我该如何实施?类似包装函数的东西? @cmbasnett @LefterisSarantaris:我宁愿单独提出问题。不要忘记描述您已经尝试过的内容,解释您的问题并添加一些最小的示例。【参考方案2】:

这是一个带有特定签名的function pointer 的typedef 声明(在本例中是一个带有void 返回且没有参数的函数)。

见What is a C++ delegate?(最佳答案,选项3)

【讨论】:

以上是关于这个声明是啥 typedef void foo();意思是? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

“typedef void (*Something)()”是啥意思

typedef void (*funcptr)(void)的含义

这个 typedef 语句是啥意思?

c语言typedef int Arrty[10] 是啥意思 然后Arrty f,c;起到了啥作用

这个 typedef 涉及 LPWSTR 是啥意思?

在 Angular 中声明视图时添加额外的 'views:'foo':' 的目的是啥?