Two or more incompatible declarations of the same function or object that appear in the same program shall be diagnosed because they result in undefined behavior.
The C standard Standard [ISO/IEC 9899:2011] identifies three distinct situations in which undefined behavior (UB) may arise as a result of incompatible declarations of the same function or object:
...
ISO/IEC 9899:2011 Section 6.7.6.2, "Array declarators," and Section section 6.2.2, "Linkages of identifiers"
...