1. 4
  1.  

  2. 2

    This is described in the C99 standard, section 6.7.5.3, paragraph 14.

    An identifier list declares only the identifiers of the parameters of the function. An empty list in a function declarator that is part of a definition of that function specifies that the function has no parameters. The empty list in a function declarator that is not part of a definition of that function specifies that no information about the number or types of the parameters is supplied.

    This then references section 6.11.6:

    The use of function declarators with empty parentheses (not prototype-format parametertype declarators) is an obsolescent feature.

    It’s the same in the C11 standard, except it’s section 6.7.6.3, paragraph 14.