3 ms·
Yeah, that's unportable. Although I'm not aware of any system where it doesn't work. For the record, regarding 0 in pointer context the C standard has this to
by avar 16y ago
Yeah, that's unportable. Although I'm not aware of any system where it
doesn't work.
For the record, regarding 0 in pointer context the C standard has this to say:
An integral constant expression with the value 0, or such an
expression cast to type void * , is called a null pointer constant. If
a null pointer constant is assigned to or compared for equality to a
pointer, the constant is converted to a pointer of that type. Such a
pointer, called a null pointer, is guaranteed to compare unequal to a
pointer to any object or function.
-- C89/C90 section 3.2.2.3 Pointers
The standard then goes on to say that NULL is a macro that's
guaranteed to expand to a null pointer constant.
- cperciva 16y agoYeah, that's unportable. Although I'm not aware of any system where it doesn't work. Right. I was considering changing this in FreeBSD last year in order to prevent map-at-NULL kernel exploits, but cooler heads prevailed (and pointed out to me how much code such a change would break).
- nuxi 16y agoHere's the historical list of machines using nonzero null pointers, from comp.lang.c FAQ: http://linuxdude.com/Steve_Sumit/C-faq/q5.17.html http://linuxdude.com/Steve_Sumit/C-faq/q5.17.html