Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Dr Nick <nospam-4@temporary-address.org.uk> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Baby X |
| References | (12 earlier) <ku6pn4$tue$1@dont-email.me> <87bo54y28r.fsf@temporary-address.org.uk> <ku8fjm$juj$1@dont-email.me> <4bQNt.683$nK2.441@en-nntp-11.dc1.easynews.com> <lntxiwlz3c.fsf@nuthaus.mib.org> |
| Date | 2013-08-12 07:42 +0100 |
| Message-ID | <8738qfwgu6.fsf@temporary-address.org.uk> (permalink) |
Keith Thompson <kst-u@mib.org> writes:
> Richard Damon <Richard@Damon-Family.org> writes:
>> On 8/11/13 12:54 PM, James Kuyper wrote:
>>> It may be horrible, but I can't imagine that it was unintentional. I see
>>> no plausible reason for adding "and the value of the function call is
>>> used by the caller", except for the explicit purpose of allowing code
>>> like that. I've no idea why - the Rationale says nothing about that
>>> decision.
>>
>> There are several reasons I can think of. You can't require the compiler
>> to issue a diagnostic for falling off the end of the function without an
>> explicit return, because in general, this would require solving the
>> halting problem. The compiler can probably find a lot of cases, and it
>> can be a good point to issue a warning for a possible falling off the
>> end without a return (but is really annoying if it complains about no
>> return at the end of the function which is not reachable, especially if
>> another compiler you use will then complain about the unreachable return).
>
> You *could* require all possible execution paths for a non-void function
> to lead to a return statement. C doesn't currently require that kind of
> compile-time analysis, but it's not all that difficult to do, and I
> think I've seen at least one language that requires it.
>
> So this:
>
> int func(void) {
> if (cond) {
> return 1;
> }
> }
>
> would be a constraint violation, but this:
>
> int func(void) {
> if (cond) {
> return 1;
> }
> else {
> return 0;
> }
> }
>
> would be valid, since the compiler can prove that the closing } is never
> reached. The compiler wouldn't be required to analyze the evaluation of
> "cond"; even if it's a constant expression, it would still check for
> returns on all paths.
>
> It's already entirely possible for a compiler to warn about such things.
Although it can't quite be done perfectly. It's possible to imagine a
controlled loop with a conditional return in it where the conditions are
such that the return will always execute before the loop terminates (and
so the loop is effectively an endless loop although not coded as such).
In that case there doesn't need to be a return at the end of the
function but we can make the two clauses of ever increasing complexity
until the compiler has to give up.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar
Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-03 16:40 -0700
Re: Baby X Jorgen Grahn <grahn+nntp@snipabacken.se> - 2013-08-04 06:04 +0000
Re: Baby X "BartC" <bc@freeuk.com> - 2013-08-04 10:29 +0100
Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-04 02:53 -0700
Re: Baby X Keith Thompson <kst-u@mib.org> - 2013-08-04 14:34 -0700
Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-05 04:36 -0700
Re: Baby X Keith Thompson <kst-u@mib.org> - 2013-08-05 08:04 -0700
Re: Baby X Ian Collins <ian-news@hotmail.com> - 2013-08-06 08:25 +1200
Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-06 04:38 -0700
Re: Baby X Ian Collins <ian-news@hotmail.com> - 2013-08-07 07:19 +1200
Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-06 12:38 -0700
Re: Baby X Ian Collins <ian-news@hotmail.com> - 2013-08-07 07:49 +1200
Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-06 15:17 -0700
Re: Baby X Ben Bacarisse <ben.usenet@bsb.me.uk> - 2013-08-07 00:29 +0100
Re: Baby X Ian Collins <ian-news@hotmail.com> - 2013-08-07 13:45 +1200
Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-07 03:22 -0700
Re: Baby X James Kuyper <jameskuyper@verizon.net> - 2013-08-07 06:36 -0400
Re: Baby X Dr Nick <nospam-4@temporary-address.org.uk> - 2013-08-10 20:04 +0100
Re: Baby X Kelsey Bjarnason <kbjarnason@gmail.com> - 2013-08-09 17:28 +0000
Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-09 12:43 -0700
Re: Baby X glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2013-08-09 20:01 +0000
[OT] Re: Baby X Eric Sosman <esosman@comcast-dot-net.invalid> - 2013-08-09 16:30 -0400
Re: Baby X Keith Thompson <kst-u@mib.org> - 2013-08-09 14:12 -0700
Re: Baby X Dr Nick <nospam-4@temporary-address.org.uk> - 2013-08-10 20:11 +0100
Re: Baby X Robert Wessel <robertwessel2@yahoo.com> - 2013-08-10 14:41 -0500
Re: Baby X James Kuyper <jameskuyper@verizon.net> - 2013-08-10 21:34 -0400
Re: Baby X Dr Nick <nospam-4@temporary-address.org.uk> - 2013-08-11 11:02 +0100
Re: Baby X James Kuyper <jameskuyper@verizon.net> - 2013-08-11 12:54 -0400
Re: Baby X Richard Damon <Richard@Damon-Family.org> - 2013-08-11 13:51 -0400
Re: Baby X James Kuyper <jameskuyper@verizon.net> - 2013-08-11 14:10 -0400
Re: Baby X Richard Damon <Richard@Damon-Family.org> - 2013-08-11 14:43 -0400
Re: Baby X Keith Thompson <kst-u@mib.org> - 2013-08-11 14:03 -0700
Re: Baby X Richard Damon <Richard@Damon-Family.org> - 2013-08-11 17:57 -0400
Re: Baby X Keith Thompson <kst-u@mib.org> - 2013-08-11 18:37 -0700
Re: Baby X glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2013-08-12 04:12 +0000
Re: Baby X Dr Nick <nospam-4@temporary-address.org.uk> - 2013-08-12 07:42 +0100
Re: Baby X Keith Thompson <kst-u@mib.org> - 2013-08-12 09:10 -0700
Re: Baby X Philip Lantz <prl@canterey.us> - 2013-08-17 22:31 -0700
Re: Baby X James Kuyper <jameskuyper@verizon.net> - 2013-08-18 14:50 -0400
Re: Baby X Ike Naar <ike@iceland.freeshell.org> - 2013-08-18 20:15 +0000
Re: Baby X James Kuyper <jameskuyper@verizon.net> - 2013-08-18 16:30 -0400
Re: Baby X Ike Naar <ike@iceland.freeshell.org> - 2013-08-18 21:03 +0000
Re: Baby X Ian Collins <ian-news@hotmail.com> - 2013-08-20 13:09 +1200
Re: Baby X Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2013-08-20 12:24 +0300
Re: Baby X Ben Bacarisse <ben.usenet@bsb.me.uk> - 2013-08-20 13:11 +0100
Re: Baby X Keith Thompson <kst-u@mib.org> - 2013-08-20 08:33 -0700
Re: Baby X Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2013-08-23 11:32 +0300
Re: Baby X Ian Collins <ian-news@hotmail.com> - 2013-08-21 08:01 +1200
Re: Baby X Keith Thompson <kst-u@mib.org> - 2013-08-11 13:57 -0700
Re: Baby X James Kuyper <jameskuyper@verizon.net> - 2013-08-10 21:29 -0400
Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-10 22:04 -0700
Re: Baby X Ike Naar <ike@iceland.freeshell.org> - 2013-08-09 20:16 +0000
Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-09 15:29 -0700
Re: Baby X Ike Naar <ike@iceland.freeshell.org> - 2013-08-10 05:45 +0000
Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-10 03:18 -0700
Re: Baby X Ike Naar <ike@iceland.freeshell.org> - 2013-08-10 17:02 +0000
Re: Baby X Ike Naar <ike@ukato.freeshell.org> - 2013-08-06 21:00 +0000
Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-06 15:07 -0700
Re: Baby X Ian Collins <ian-news@hotmail.com> - 2013-08-05 09:42 +1200
Re: Baby X Roberto Waltman <usenet@rwaltman.com> - 2013-08-04 14:46 -0400
Re: Baby X falk@rahul.net (Edward A. Falk) - 2013-08-15 03:02 +0000
Re: Baby X falk@rahul.net (Edward A. Falk) - 2013-08-15 03:23 +0000
Re: Baby X Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-15 06:09 -0700
csiph-web