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.