Path: utzoo!mnetor!uunet!husc6!mailrus!nrl-cmf!cmcl2!brl-adm!adm!MAILER%ALASKA.BITNET@CUNYVM.CUNY.EDU From: MAILER%ALASKA.BITNET@CUNYVM.CUNY.EDU Newsgroups: comp.lang.c Subject: Undelivered mail Message-ID: <12248@brl-adm.ARPA> Date: 12 Mar 88 00:07:34 GMT Sender: news@brl-adm.ARPA Lines: 70 Subject: Re: Header problems [Non-Deliverable: User does not exist or has never logged on] Reply-To: Info-C@BRL.ARPA Received: From UWAVM(MAILER) by ALASKA with Jnet id 5037 for SXJVK@ALASKA; Fri, 11 Mar 88 14:38 AST Received: by UWAVM (Mailer X1.25) id 3334; Fri, 11 Mar 88 15:36:27 PST Date: Thu, 10 Mar 88 03:51:24 GMT Reply-To: Info-C@BRL.ARPA Sender: Info-C List From: "Daniel A. Glasser" Subject: Re: Header problems Comments: To: info-c@brl-smoke.arpa To: Vic Kapella Okay, I've now been flamed and roasted via mail, news and even on the phone for my posting about NULL and 0. If it were not for noisy and slow connections between the system I do my posting from and where I actually am, I would have written that to be the safest, you must cast NULL whenever you use it in a call. It was my recollection, and I did not have my K&R handy to check it out when I posted my message, that the C specification in K&R stated that when pointers to different objects had different representations, all pointers were passed in the "universal" pointer representation, just as char is promoted to int, float to double, so would (foo *) be promoted to the equivilent of (void *), and then moved back into a (foo *) representation when used at the other end. Having delt with compilers that did this, I assumed that the language had this orthoginality. I'm sorry, I aplogise to everyone who's life I have ruined with my posting. I made my posting not out of a lust for power, but because in my everyday work, I get about 3 calls a week passed to me from the tech. support people where I work from customers who are porting VAX unix code to the Atari ST using our compiler where ints are 16 bits, pointers 32 bits, and they often INSIST that K&R allows them to use 0 or NULL without casts in function calls expecting pointers. They get upset when I tell them that that is not the case. If it makes you feel any better, I'll retract what I said. However, the #ifndef ... #endif or the #undef should be used, and the EXPLICIT casting of any use of NULL in a parameter list should be stressed. Please note that of over 100 programs that I have gathered from the network source groups, not one of them that I have actually looked at has cast NULL to any kind of pointer when using it in calls. Not one! Not even the GNU stuff that I've looked at. In other words, though proper usage uses casts on NULL, common usage does not. -- Daniel A. Glasser dag@chinet.UUCP One of those things that goes "BUMP!!! (ouch!)" in the night. ...!att-ih!chinet!dag | ...!ihnp4!mwc!dag | ...!ihnp4!mwc!gorgon!dag