Started: 19Oct2016. Last updated 25Oct2016
This page is in group Technology and is about a point or two one could be aware of when using third-party code. Some do it this way, some that way, and you perhaps your way. And I, my way? If you always test returns from function calls of third-party C code you can skip this note, as you would know it.
[expand title=»Limited selfrefs» tag=»h2″]
See first Limited selfrefs. In short: I am not referring to (m)any of my own blog notes directly in the text. However, with this theme there should be no notes to refer to directly.
[/expand]
This is going to be a small epistle on the fact that different C coders (hopefully not the same) use «return value 0» from a function both if something is in error and/or if it’s ok. C coders would correspondingly return 1 if ok or -1 if error. Some times this is confusing, so I’ll write about it.
The first corresponds to use as typical ok / not ok:
typedef enum {false,true} bool;
bool positive_ok (const int input) {
bool positive_ok;
if (input>=0) {positive_ok=true;} else {positive_ok=false;}
return positive_ok; // 0 if error
}
The second refers to the situation where, in some cases a full range of error messages is needed (often through the «errno» value, see below). However, in most cases I’d say that 0 and -1 are used as ok / not ok:
#define OK (0)
#define ERROR (-1) // or a list of negative or positive error messages
// ..but the coder knows best and consequently uses values 0 and -1 instead:
int positive_OK (const int input) {
if (input>=0) {return 0;} else {return (-1);}
}
They would probably be compiled into equal code blocks.
Finally, here’s the errno that is ok to know about:
#include <errno.h> Wikipedia: Most functions indicate that they detected an error by returning a special value, typically NULL for functions that return pointers, and −1 for functions that return integers
That concludes this shortest of all my blog notes!