Что это за объявление typedef void foo(); имею в виду?

Я не понимаю значения 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;
}