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

时间:2014-12-14 23:50:55

标签: c typedef variable-declaration function-declaration

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

typedef void interrupt_handler();

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:9)

这是typedef的{​​{1}}声明,带有特定的签名(在这种情况下是一个带有void返回且没有参数的函数。)

请参阅function pointer(最佳答案,选项3)