Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | James Kuyper <jameskuyper@verizon.net> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Return value for error |
| Date | 2011-05-03 06:26 -0400 |
| Organization | A noiseless patient Spider |
| Message-ID | <ipol8c$ohd$1@dont-email.me> (permalink) |
| References | <e63ceea9-301d-4b90-9495-4e2a8085fae5@x1g2000yqb.googlegroups.com> |
On 05/03/2011 04:31 AM, pozz wrote:
> A very simple question. What do you use as the return value of a
> function for error/ok results?
> I can't decide between 0 for error and !=0 for ok, or 0 for ok and !=0
> for errors.
>
> If !=0 is ok, I can write:
>
> if (myfunction()) printf("OK\n");
This is a perfectly reasonable approach, but when you use it, one of the
most important things is to make sure to name the function so that it
can be read as a question, and give it a non-zero value if the answer to
that question is "yes". Example from the C standard library: isalpha().
However, there's also lots of functions in the C standard library which
violate this rule; for instance, fseek().
If you can't think of a name for the function which would make this
work, then using this approach is probably not appropriate.
...
> Another strategy is to define custom error code:
>
> #define ERROR_OK 0
> #define ERROR_UNDEFINED 1
> #define ERROR_WRONGVALUE 2
>
> and so on, and always write:
>
> if (myfuction() == ERROR_OK) printf("OK\n");
If your code returns multiple different error codes, then somewhere you
should have a call to the function that actually does different things,
depending upon which error code is returned; a switch() is usually the
best way to do this. You can also have calls that don't make a
distinction; but if there aren't any calls to the function which do make
the distinction, then you don't really need to distinguish different
error conditions.
I'm guilty of violating that rule in my own code; but my intention is
that test drivers for the called routine will check which error code is
returned, even if the actual delivered program does not.
--
James Kuyper
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Return value for error pozz <pozzugno@gmail.com> - 2011-05-03 01:31 -0700
Re: Return value for error jacob navia <jacob@spamsink.net> - 2011-05-03 10:46 +0200
Re: Return value for error Ike Naar <ike@otaku.freeshell.org> - 2011-05-03 09:04 +0000
Re: Return value for error Ian Collins <ian-news@hotmail.com> - 2011-05-03 21:19 +1200
Re: Return value for error James Kuyper <jameskuyper@verizon.net> - 2011-05-03 06:26 -0400
Re: Return value for error Keith Thompson <kst-u@mib.org> - 2011-05-03 12:03 -0700
Re: Return value for error "Kleuskes & Moos" <kleuske@xs4all.nl> - 2011-05-04 05:15 -0700
Re: Return value for error Keith Thompson <kst-u@mib.org> - 2011-05-04 08:26 -0700
Re: Return value for error "Kleuskes & Moos" <kleuske@xs4all.nl> - 2011-05-04 17:08 -0700
Re: Return value for error Keith Thompson <kst-u@mib.org> - 2011-05-04 17:54 -0700
Re: Return value for error "Kleuskes & Moos" <kleuske@xs4all.nl> - 2011-05-05 12:03 -0700
Re: Return value for error James Dow Allen <jdallen2000@yahoo.com> - 2011-05-03 03:45 -0700
Re: Return value for error Jorgen Grahn <grahn+nntp@snipabacken.se> - 2011-05-03 20:50 +0000
Re: Return value for error pete <pfiland@mindspring.com> - 2011-05-03 07:50 -0400
Re: Return value for error Keith Thompson <kst-u@mib.org> - 2011-05-03 12:04 -0700
Re: Return value for error Martin Ambuhl <mambuhl@earthlink.net> - 2011-05-03 07:59 -0400
Re: Return value for error Mark Storkamp <mstorkamp@yahoo.com> - 2011-05-03 08:46 -0500
Re: Return value for error Stephen Sprunk <stephen@sprunk.org> - 2011-05-03 10:13 -0500
Re: Return value for error William Ahern <william@wilbur.25thandClement.com> - 2011-05-03 13:08 -0700
Re: Return value for error Kenneth Brody <kenbrody@spamcop.net> - 2011-05-03 13:23 -0400
Re: Return value for error Peter Nilsson <airia@acay.com.au> - 2011-05-03 16:01 -0700
Re: Return value for error Nobody <nobody@nowhere.com> - 2011-05-05 07:21 +0100
Re: Return value for error Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-05-05 15:13 +0100
Re: Return value for error Nobody <nobody@nowhere.com> - 2011-05-06 03:51 +0100
Re: Return value for error James Kuyper <jameskuyper@verizon.net> - 2011-05-05 23:38 -0400
Re: Return value for error Keith Thompson <kst-u@mib.org> - 2011-05-05 08:44 -0700
Re: Return value for error Seebs <usenet-nospam@seebs.net> - 2011-05-05 20:49 +0000
Re: Return value for error Keith Thompson <kst-u@mib.org> - 2011-05-05 14:10 -0700
Re: Return value for error Seebs <usenet-nospam@seebs.net> - 2011-05-06 00:26 +0000
Re: Return value for error Keith Thompson <kst-u@mib.org> - 2011-05-03 12:09 -0700
csiph-web