Path: ...!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: bart Newsgroups: comp.lang.c Subject: Re: question about nullptr Date: Sat, 6 Jul 2024 19:20:15 +0100 Organization: A noiseless patient Spider Lines: 32 Message-ID: References: <20240706054641.175@kylheku.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Sat, 06 Jul 2024 20:20:15 +0200 (CEST) Injection-Info: dont-email.me; posting-host="c37fc5164b87e9d2d37a8965ff47e68e"; logging-data="4117603"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+mow8fdqo+KrfgONlmBoLb" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:iYt7drN9TjyLZDA6EVPIObjFDAc= Content-Language: en-GB In-Reply-To: Bytes: 2525 On 06/07/2024 15:04, Scott Lurndal wrote: > Janis Papanagnou writes: >> On 06.07.2024 14:54, Kaz Kylheku wrote: >>> On 2024-07-06, Thiago Adams wrote: >>>> If you were creating C code today and could use a C23 compiler, would >>>> you use nullptr instead of NULL? >>> >>> In greenfield projects under my dictatorship, I use 0, as in: >>> >>> char *p = 0; >>> >>> I was still 20 something when I (easily) wrapped my head around the 0 >>> null pointer constant, and have not had any problems with it. >>> Once I learned the standard-defined truth about null pointer constants, >>> and their relationship to the NULL macro, I dropped NULL like a hot >>> potato, and didn't look back (except when working in code bases that use >>> NULL). >> >> We also used 0 as "universal" pointer value regularly without problems. > > Whereas I spent 6 years programming on an architecture[*] where a > null pointer was represented in hardware by the value 0xc0eeeeee. I always > use the NULL macro in both C and C++ code. You can ignore that requirement and just use all-bits-zero (in memory, not just in C source code). After all, the only thing you might want hardware support for is trapping a dereference of a NULL value. Presumably it was more of an ABI thing where all languages/compilers complying with it had to use the same NULL value, so the choice could have been made there.