I disagree. My quote is in reference to functions that accept a variable number of arguments, such as the way you use func1 and func2. You say you won't pass any arguments, but you pass 1 each. That falls under this clause, so your code is undefined. Unless you can tell me how to describe a function that accepts a variable number of arguments[1] without using an ellipsis and not showing how the function is called.Your quote is meaningless because we're not talking about a variable arguments function.
That quote doesn't say anything about a parameter. It talks about arguments, and there's no ambiguity when it comes to what an argument[1] is as opposed to what a parameter[2] is. The difference in meaning is in the details, and you have to go all over the place in the standard to get the whole story. I've done that.In that case you must have a parameter before the ellipses is what that quote is saying.
No, it's a definition. I think that's the subtle point that you're missing. A declaration is not a definition, but a definition is also a declaration, but the rules for a definition are different from a declaration, and they take precedence. In a declaration, f(void) and f() are not the same, but in a definition, f(void) and f() are the same. That's the point I'm clumsily trying to get across.And where you have main() with the function's body that's a declaration.
Heheh, no. I'm saying that main(void) and main() are the same according to the C standard that I have sitting in front of me. However your implementation chooses to handle undefined behavior is beyond the scope of the standard, so your example is irrelevant, and your understanding of the issue is lacking, even though it really doesn't matter one way or the other whether you're right or I'm right...but professional arrogance says that I have to prove I'm rightYou're saying that void and empty are not the same in that case so you're really saying I'm more correct, not Prelude, because that's what I was saying.
[1] Where 'argument' is very clearly defined as "expression in the comma-separated list bounded by the parentheses in a function call expression"
[2] Where 'parameter' is also very clearly defined as "object declared as part of a function declaration or definition that acquires a value on entry to the function"