var x: pointer to func() pointer to array[5] of pointer to func() char;
or if you wish to replace some keywords with glyphs:
var x: ^func() ^[5] ^func() char;
And it's always a nice puzzle for the reader to explain why there are three "pointer" in cdecl output and three carets in the ALGOL-like declaration, but only two asterisks in the C declaration.
In this case, the C declaration doesn't match the other two. The variable x is a function that returns a pointer to an array of 5 pointers to functions returning char. Indeed, that's what cdecl.org says:
declare x as function returning pointer to array 5 of pointer to function returning char
Using the notation you did, that would be:
var x: func() ^[5] ^func() char
There are only two arrows there now.
If you wanted a pointer to a function like this, you would need a third asterisk in the declaration:
Oh, good catch, thank you! But I remember an example with some other tricky C expression/type declarator where the number of actual dereferences differed from the amount of asterisks in the code.
> Using the notation you did, that would be:
Well, it'd be
func x() ^[5] ^func() char; ...
because it's a function declaration, after all, not a variable.
> But I remember an example with some other tricky C expression/type declarator where the number of actual dereferences differed from the amount of asterisks in the code.