Article View: nl.comp.programmeren
Article #194Re: Lijnen tellen van een project
From: Sjoerd A. Schreuder
Date: Fri, 28 Jan 2005 13:25
Date: Fri, 28 Jan 2005 13:25
53 lines
2834 bytes
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-mailReferences:
<%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