Rationale: When comparing types in different translation units, C++ relies
on name equivalence when C relies on structural equivalence
. Regarding parameter types: since the type defined in a parameter list
would be in the scope of the function, the only legal calls in C++
would be from within the function itself
. Effect on original feature: Deletion of semantically well-defined feature
. Difficulty of converting: Semantic transformation
. The type definitions must be moved to file scope, or in header files
. This style of type definition is seen as poor coding style
.