It is apparently legal to write:
extern "C" typedef int foo_func(int);
However, if I use this typedef to declare a function, like:
will foo() have C-linkage?
There is an example in the standard (and repeated on cppreference that covers this. The name foo will have C++ linkage, while its type is a C function.