Message-Id: Comments: Authenticated sender is From: "Salvador Eduardo Tropea (SET)" Organization: INTI To: Vik Heyndrickx , Peter DOT Palotas DOT blizzar AT hem1 DOT passagen DOT se, djgpp AT delorie DOT com, djgpp-workers AT delorie DOT com Date: Wed, 25 Mar 1998 09:52:26 +0000 MIME-Version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Subject: Re: NULL redefined! :( In-reply-to: <3518F995.6AEA@rug.ac.be> Precedence: bulk Vik Heyndrickx wrote: > Salvador Eduardo Tropea (SET) wrote: > > But perhaps we must investigate if the __null have some advantage and: > > > > 1) Define NULL conditionally (no redefinition) > > 2) If not defined: > > a) Test the gcc version, if 2.8.0 define with __null > > b) if prior define with 0. > > Conditional redefinition is dangerous since this way NULL might get two > values that do not compare equal, even when compiled with the same > compiler version. > An unconditional #define is best (i.e. preceded with #undef) as it only > disadvantages programs which are at fault. > > Checking whether gcc's version is 2.8.0, won't help a bit: > for instance the libc library can have been defined using gcc-2.7.2.1 > and hence NULL would be 0. A program compiled with 2.8.0 would then > define NULL as __null. Like DJ mentionned, a library function like fopen > can return NULL (=0) and it must be possible that a program compares it > with NULL (=__null). You are talking without testing first. You are wrong, __null and 0 are equivalent, you CAN mix code using __null with code using 0. In fact the whole RHIDE and my whole editor works 100% fine using the conditional definition of NULL, that means: MY code uses __null (compiled with gcc 2.8.0) and the libc uses 0 (compiled with gcc 2.7.2). The fact is that __null is a C++ symbol and is equivalent to 0. As I explain in the other mail I didn't have the time to figure out what's the advantage of __null. SET ------------------------------------ 0 -------------------------------- Visit my home page: http://set-soft.home.ml.org/ or http://www.geocities.com/SiliconValley/Vista/6552/ Salvador Eduardo Tropea (SET). (Electronics Engineer) Alternative e-mail: set-soft AT usa DOT net set AT computer DOT org CQ: 2951574 Address: Curapaligue 2124, Caseros, 3 de Febrero Buenos Aires, (1678), ARGENTINA TE: +(541) 759 0013