This
A_output(message)
struct msg message;
{
}
is an old syntax of a function definition that now is not allowed because the function does not declare the return type. Early by default the return type was int
.
As for such function definition
void A_output(message)
struct msg message;
{
}
then it is a valid function definition with an identifier list.
From the C Standard (6.9.1 Function definitions)
6 If the declarator includes an identifier list, each declaration in
the declaration list shall have at least one declarator, those
declarators shall declare only identifiers from the identifier list,
and every identifier in the identifier list shall be declared. An
identifier declared as a typedef name shall not be redeclared as a
parameter. The declarations in the declaration list shall contain no
storage-class specifier other than register and no initializations.