Der Martin: Kompliziertes typedef in C

Beitrag lesen

Hallo Bio,

Aus irgendeinem Grund brauche ich in meinem Programm ein Array von Zeigern auf Funktionen mit Rückgabewert int. Also quasi:

int (*func_array[])() = {func1,func2};

Müsste es nicht richtig

int (*func_array)()[] = {func1,func2};

heißen? Also erst den Basistyp deklarieren, dann die Array-Indexklammern? Die Indexklammern müssten meiner Ansicht nach außerhalb der runden Klammern stehen, weil die Array-Bildung ja der letzte Schritt bei der Deklaration dieses komplexen Typs ist.
Ich habe so aufwendige Konstrukte bisher nicht benutzt aber...
Mit einer zweistufigen Deklaration müsste es eigentlich klappen:

typedef int(*func)() functype;
functype func_array[] = {func1, func2};

(func_array ist ein Vektor/Array von Zeigern auf Funktionen undefinierten Types mit Rückgabewert int)

Genau das müsste nach meiner Einschätzung bei der obigen Deklaration herauskommen.

So long,

Martin