By external variable I mean a variable declared with the extern modifier (and defined elsewhere in the program).
I\'ve been told of this limitation, and couldn\
My understanding is that the language does not impose a maximum limitation. Compilers and platforms would impose a limit.
Compilers may restict the quantity due to the memory they want to devote to tracking and translating these.
The platform always has limited space for variables.
Yes, there is a minimal limit that every compiler should support.
In this case, every compiler should be able to support at least 4095 external identifiers in one translation unit (but most compilers probably support much more).
The C99 standard specifies several translation limits (5.2.4.1). One of those is :
4095 external identifiers in one translation unit
The C89 standard specifies this limit (2.2.4.1) :
511 external identifiers in one translation unit
Note that these are minimum limits for conforming implementations, not absolute limits.