🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: nl.comp.programmeren
Article #194

Re: Lijnen tellen van een project

#194
From: Sjoerd A. Schreuder
Date: Fri, 28 Jan 2005 13:25
53 lines
2834 bytes
Johan Wevers wrote:
> Dr.Ruud <rvtol+news@isolution.nl> wrote:
> 
>>NULL en 0 zijn logisch false. NULL is in C bijvoorbeeld
>>gedefinieerd als 0L, ofwel (long) 0.
> 
> Sinds wanneer niet meer als (void*)0 ?

Een boel C compilers zijn ook C++ compilers. En in C++
is (void*)0 geen goede waarde voor NULL, omdat een (void*)
niet omgezet mag worden in b.v. een (char*). C++ heeft immers
een strictere type-checking dan C.

In plaats van een uitzondering voor (void*)0 te maken, is
er in C++ een uitzondering voor 0 (beter: elke compile-time
expressie met als resultaat 0) gemaakt.

Dus om de ene uitzondering niet te hoeven maken, is er een
andere uitzondering gemaakt. Tja, over hoe logisch dat is
valt te twisten, maar feit is dat in C++ NULL niet (void*)0
kan zijn.

Dat gezegd hebbend, het zou natuurlijk best mogelijk zijn
geweest om:
#ifndef NULL
#  ifdef __cplusplus
#    define NULL (0)
#  else
#    define NULL ((void*)0)
#  endif
#endif
op te nemen. En dan zouden C en C++ dus een verschillende NULL
hebben gehad.

Maar ik ken de C standaard niet zo goed; C++ ken ik een stuk
beter. Gelukkig heeft 'moi' daar al wat over gepost.

Overigens zijn er voorstellen om in de volgende C++ standaard
(2009 of zo) een 'nullptr' op te nemen om van de NULL af te zijn.
Dat is handig in de volgende situatie:

void foo(long);
void foo(void*);

int main()
{
   foo(NULL); // roept foo(long) aan
}

Bottomline: dit soort details zorgt ervoor dat C en C++ toch als
verschillende programmeertalen moeten worden gezien.

Sjoerd
Technical Details
Message-ID: <41fa3d30$0$96924$abc4f4c3@news.wanadoo.nl>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!news.glorb.com!solnet.ch!solnet.ch!news2.euro.net!news.euro.net!postnews1.euro.net!news.wanadoo.nl!not-for-mail
References: <%XJId.2415$OZ2.252982@phobos.telenet-ops.be> <ct6veq.4f8.1@news.isolution.nl> <Xns95EA98A5B4Dcastleam <ct9k2f.4js.1@news.isolution.nl> <IAzIFp.1qJ@vulcan.xs4all.nl>

Show Full Headers
Complete Article Headers
X-Google-Thread: 107324,ab34a8b99e320381
X-Google-Thread: fcea4,ab34a8b99e320381
X-Google-Attributes: gid107324,gidfcea4,public
X-Google-Language: DUTCH,ASCII-7-bit
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!news.glorb.com!solnet.ch!solnet.ch!news2.euro.net!news.euro.net!postnews1.euro.net!news.wanadoo.nl!not-for-mail
Date: Fri, 28 Jan 2005 14:25:02 +0100
From: "Sjoerd A. Schreuder" <sa_schreuder@wanadoo.nl>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)
X-Accept-Language: en-us, en
MIME-Version: 1.0
Newsgroups: nl.comp.programmeren,be.comp.programming
Subject: Re: Lijnen tellen van een project
References: <%XJId.2415$OZ2.252982@phobos.telenet-ops.be> <ct6veq.4f8.1@news.isolution.nl> <Xns95EA98A5B4Dcastleam <ct9k2f.4js.1@news.isolution.nl> <IAzIFp.1qJ@vulcan.xs4all.nl>
In-Reply-To: <IAzIFp.1qJ@vulcan.xs4all.nl>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 54
Message-ID: <41fa3d30$0$96924$abc4f4c3@news.wanadoo.nl>
Organization: Wanadoo
NNTP-Posting-Date: 28 Jan 2005 13:25:04 GMT
NNTP-Posting-Host: c3eea341e.cable.wanadoo.nl
X-Trace: 1106918704 flip.euronet.nl 96924 62.234.52.30:1695
X-Complaints-To: abuse@wanadoo.nl