这个声明是啥 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)的含义