It is undefined behavior.
(C99, 6.5.2.2p6) "If the expression that denotes the called function has a type that does not include a
prototype, [...] If the number of arguments does not equal the number
of parameters, the behavior is undefined."
And we know from 6.9.1p7 that print
function does not provide a prototype.
C99, 6.9.1p7) "If the declarator includes a parameter type list, the
list also specifies the types of all the parameters; such a declarator
also serves as a function prototype for later calls to the same function
in the same translation unit. If the declarator includes an identifier
list,142) the types of the parameters shall be declared in a
following declaration list."
As there is no constraint violation, no diagnostic message is required.