Sujet : Re: Baby X is bor nagain
De : already5chosen (at) *nospam* yahoo.com (Michael S)
Groupes : comp.lang.cDate : 30. Jun 2024, 10:18:35
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <20240630121835.00000e48@yahoo.com>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
User-Agent : Claws Mail 3.19.1 (GTK+ 2.24.33; x86_64-w64-mingw32)
On Sat, 29 Jun 2024 20:55:54 +0100
bart <
bc@freeuk.com> wrote:
On 29/06/2024 18:46, Richard Harnden wrote:
On 29/06/2024 15:14, bart wrote:
[...]
My older bcc compiler reported 4 as a hard error unless an
override was used.
But you didn't say anything about main's args.
I did, indirectly. The actual error was the use of "()" as an empty
parameter list (for any function, not just main, but my example could
also have been 'void H(){H(123);}'). If you tried to compile:
int main() {
main(123);
}
then it wouldn't get past the () to the call.
Eventually I dropped that restriction, and the reason was that so
much code used such parameter lists, for any function.
Not because they wanted unchecked args (there are some legitimate
use-cases within function pointer types), but because so many people
assumed () meant zero parameters like (void).
Why was such code so common? Presumably because compilers said
nothing; and they couldn't because the language allowed it. If they
had required an override like mine did, more would have got the
message.
>
I tried following code:
int foo() { return 1; }
Both MSVC and clang warn about it at high warnings level (-Wall for
MSVC, -Wpedantic for clang). But they don't warn at levels that most
people use in practice (-W3 or -W4 for MSVC, -Wall for clang).
gcc13 produces no warning even at -Wpedantic. It does produce warning
with '-Wpedantic -std=xxx' for all values of xxx except c23 and gnu23.
The absence of warning for c23/gnu23 makes sense, the rest of gcc
behavior - less so.
Now it's too late because apparently the meaning of () is changing to
mean (void). All those people who got it wrong (and introduced a
dangerous bug) have won!