Pardon the French, but you don't know what you're talking about.
That it does, for lack of stack size. But no, the limit is _not_ 7 levels.
None involved.
The few ones involved are pretty standard in the embedded world, being nothing more but expansions of the traditional __far/__near pattern, and can be ported just fine. You just have to follow standard practice and put a macro as a delimiter between your code and the compiler. Redefine the macro and all the language extensions are gone.
The majority of any such inability would be in the users' head.
Yes, it really doesn't like function pointers. But there's a huge step from that to what you claim.