Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #105747
| From | Ben Bacarisse <ben.usenet@bsb.me.uk> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Return statement: anything goes? |
| Date | 2017-03-10 20:17 +0000 |
| Organization | A noiseless patient Spider |
| Message-ID | <87o9x8yjgp.fsf@bsb.me.uk> (permalink) |
| References | <o9utno$5tn$1@dont-email.me> |
BartC <bc@freeuk.com> writes:
> This is something that came up last week, and was another example of C
> compilers all reacting differently to the same errors.
>
> In this case, whether or not a return statement is present, and
> whether it returns the correct type of expression:
>
> int V;
>
> void A1(int x) { }
> void A2(int x) { return;}
> void A3(int x) { return 123;}
>
> int B1(int x) { }
> int B2(int x) { return;}
> int B3(int x) { return 123;}
> int B4(int x) { return &V;}
> int B5(int x) { if (1) return x;}
>
> void* C1(int x) { }
> void* C2(int x) { return;}
> void* C3(int x) { return 123;}
> void* C4(int x) { return &V;}
>
> int main(void) { } // M1
> int main(void) { return;} // M2
> int main(void) { return 123;} // M3
> int main(void) { return &V;} // M4
>
> (The main() variations were tested one at a time.)
>
> A selection of Windows C compilers gave these errors and warnings with
> default options (E = error, W = warning, dash = no error):
What's the point of that? By default, almost all C compilers implement
a language that is not C. If you are aiming for compatibility with some
popular compiler, then that's one whose behaviour you should copy and
the other are a distraction.
But if you are not, why burden yourself with the history they they are
all struggling with? I think you should do what you consider to be,
technically, best.
> A1 A2 A3 B1 B2 B3 B4 B5 C1 C2 C3 C4 M1 M2 M3 M4
>
> Pelles C - - W W E - E - - E E - - E - E
> lccwin - - W W W - E W W W E - - W - W
> DMC - - - - E - E - - - E - - - - E
> gcc/tdm - - W - W - W - - W W - - W - W
> Tiny C - - - - - - W - - - W - - - - W
> MSVC'08 - - W W W - W - W W W - - - - -
>
> (bartc - - E E E - E E E E E - * E - E)
>
> The last row shows what I consider to be errors, where I wouldn't be
> happy with a wrong or missing return statement making it into code
> that is to be executed.
Your compiler can generate any diagnostics you like, but if you are
implying that you would not generate code for some of these, then you
are compiling yet another C dialect, just like all the other compilers
listed do (in default mode).
<snip>
--
Ben.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Return statement: anything goes? BartC <bc@freeuk.com> - 2017-03-10 19:13 +0000
Re: Return statement: anything goes? John Bode <jfbode1029@gmail.com> - 2017-03-10 11:59 -0800
Re: Return statement: anything goes? Keith Thompson <kst-u@mib.org> - 2017-03-10 12:34 -0800
Re: Return statement: anything goes? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-03-10 20:17 +0000
Re: Return statement: anything goes? bart4858@gmail.com - 2017-03-10 13:17 -0800
Re: Return statement: anything goes? Ian Collins <ian-news@hotmail.com> - 2017-03-11 10:30 +1300
Re: Return statement: anything goes? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-03-11 01:25 +0000
Re: Return statement: anything goes? BartC <bc@freeuk.com> - 2017-03-11 12:11 +0000
Re: Return statement: anything goes? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-03-11 14:57 +0000
Re: Return statement: anything goes? BartC <bc@freeuk.com> - 2017-03-11 16:31 +0000
Re: Return statement: anything goes? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-03-11 17:47 +0000
Re: Return statement: anything goes? BartC <bc@freeuk.com> - 2017-03-11 17:57 +0000
Re: Return statement: anything goes? jameskuyper@verizon.net - 2017-03-11 10:59 -0800
Re: Return statement: anything goes? BartC <bc@freeuk.com> - 2017-03-11 19:34 +0000
Re: Return statement: anything goes? jameskuyper@verizon.net - 2017-03-11 11:59 -0800
Re: Return statement: anything goes? supercat@casperkitty.com - 2017-03-11 12:26 -0800
Re: Return statement: anything goes? supercat@casperkitty.com - 2017-03-11 12:22 -0800
Re: Return statement: anything goes? jameskuyper@verizon.net - 2017-03-11 12:42 -0800
Re: Return statement: anything goes? supercat@casperkitty.com - 2017-03-11 13:01 -0800
Re: Return statement: anything goes? Gordon Burditt <gordon@hammy.burditt.org> - 2017-03-13 16:25 -0500
Re: Return statement: anything goes? Gareth Owen <gwowen@gmail.com> - 2017-03-11 16:43 +0000
Re: Return statement: anything goes? BartC <bc@freeuk.com> - 2017-03-11 18:13 +0000
Re: Return statement: anything goes? BartC <bc@freeuk.com> - 2017-03-11 18:27 +0000
Re: Return statement: anything goes? gordonb.rlpr3@burditt.org (Gordon Burditt) - 2017-03-13 16:18 -0500
Re: Return statement: anything goes? supercat@casperkitty.com - 2017-03-11 12:44 -0800
Re: Return statement: anything goes? Malcolm McLean <malcolm.mclean5@btinternet.com> - 2017-03-11 07:43 -0800
Re: Return statement: anything goes? BartC <bc@freeuk.com> - 2017-03-11 18:34 +0000
Re: Return statement: anything goes? Malcolm McLean <malcolm.mclean5@btinternet.com> - 2017-03-11 10:43 -0800
Re: Return statement: anything goes? Keith Thompson <kst-u@mib.org> - 2017-03-10 12:27 -0800
Re: Return statement: anything goes? Noob <root@127.0.0.1> - 2017-03-10 22:06 +0100
Re: Return statement: anything goes? bart4858@gmail.com - 2017-03-10 13:26 -0800
Re: Return statement: anything goes? antispam@math.uni.wroc.pl - 2017-03-12 05:29 +0000
Re: Return statement: anything goes? BartC <bc@freeuk.com> - 2017-03-12 10:52 +0000
Re: Return statement: anything goes? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-03-12 12:19 +0000
Re: Return statement: anything goes? BartC <bc@freeuk.com> - 2017-03-12 12:51 +0000
csiph-web