No, names are only visible outside a library (or source file) through linkage, and in C, types do not have linkage. C11 §6.2.2/2:
In the set of translation units and libraries that constitutes an entire program, each declaration of a particular identifier with external linkage denotes the same object or function.
Two struct
definitions in different translation units (usually from inclusion of a common header) must match up to a certain degree of similarity to achieve compatibility with each other, but conceptually each translation unit has its own distinct set of data-types.
In C++, you would in theory have cause for concern, because class types, and typedef
names declared along with a class type, do have linkage. However, in practice the linker would not see them.
So, there's really nothing to worry about.