typedef w c.

0

typedef bool func (const struct e a, void p);

Jak to rozumiec?

1

Tak, że od teraz typ func to funkcja przyjmująca wskaźnik na stałą strukturę e oraz wskaźnik na pustą wartość a zwracająca typ bool.

2

Deklaruje func jako "prototyp" funkcji, która zwraca bool i przyjmuje 2 wskaźniki. Przy czym to nie jest to samo co deklaracja typu "wskaźnika funkcji".

#include <stdio.h>
#include <stdbool.h>

struct e { int x; };

typedef bool func (const struct e *a, void* p);
func foo;
func bar;
func baz;

typedef bool (*fptr)(const struct e* a, void* p);

int main() 
{
    struct e str;
    void* ptr = NULL;
    
    fptr pointer1 = foo;
    pointer1(&str, ptr);
    
    func* pointer2 = bar;
    pointer2(&str, ptr);
    
    baz(&str, ptr);
    
    return 0;
}

bool foo(const struct e* a, void* p)
{
    puts("foo");
    return false;
}

bool bar(const struct e* a, void* p)
{
    puts("bar");   
    return true;
}

bool baz(const struct e* a, void* p)
{
    puts("baz");
    return true;
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.