This
int func(_) { return 1; }
is a function definition with an identifier list consisiting from one identifier with name _ (underscore).
It is not a correct function definition. According to 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.
It would be more correctly to define the function for example like
int func(_) int _; { return 1; }
As for the similar definition of main
int main(_) { //... }
then it is not a valid declaration of main even if to add definition of the identifier _ like it is done above
int main(_) int _; { //... }
The C standard does not allow to declare main with an identifier list. At least it is not a standard declaration of main.
x.