Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Keith Thompson <kst-u@mib.org> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Baby X |
| Date | 2013-08-12 09:10 -0700 |
| Organization | None to speak of |
| Message-ID | <lnhaeunb4i.fsf@nuthaus.mib.org> (permalink) |
| References | (13 earlier) <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> <8738qfwgu6.fsf@temporary-address.org.uk> |
Dr Nick <nospam-4@temporary-address.org.uk> writes:
> Keith Thompson <kst-u@mib.org> writes:
[...]
>> 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.
It doesn't have to be done perfectly. It's entirely possible to define
a fairly straightforward set of rules, checkable by a compiler, so that
any function that satisfies the rules is guaranteed to return a result.
The rules don't have to rely on data flow analysis.
It's still possible for a function that always returns a result to
violate those rules. Such a function can be "fixed" by adding an
otherwise unnecessary return statement.
This is a solved problem; C# and Java already have such rules in place.
(And again, it would be impractical to add such rules to C, but C
compilers have always been permitted to warn about cases where the
compiler can't *prove* that a function returns properly.)
--
Keith Thompson (The_Other_Keith) kst-u@mib.org <http://www.ghoti.net/~kst>
Working, but not speaking, for JetHead Development, Inc.
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
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