🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: nl.comp.programmeren
Article #223

Re: Lijnen tellen van een project

#223
From: Sjoerd A. Schreuder
Date: Tue, 01 Feb 2005 01:15
68 lines
3785 bytes
Johan Wevers wrote:
> Sjoerd A. Schreuder <sa_schreuder@wanadoo.nl> wrote:
> 
> 
>>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.
> 
> 
> Hmmm. Een void* kun je toch casten naar elk ander soort pointer,
> ook in C++? Ik heb dat soort constructies vaak genoeg gebruikt
> (void* casten naar een klasse naar keuze).

Met expliciet casten kun je alles. Met een reinterpret_cast<>
kun je knollen in citroenen omzetten.

Zonder cast kan een void* niet naar een foo* worden omgezet.
Omgekeerd, foo* naar void* kan wel zonder cast.

[hier heb je teveel geknipt waardoor het lijkt alsof de 'dat' uit
  onderstaande zin op bovenstaande slaat.]
>>Dat is handig in de volgende situatie:

[de 'dat' slaat op een eventuele 'nullptr' keyword voor een volgende
C++ versie]

>>void foo(long);
>>void foo(void*);
>>
>>int main()
>>{
>>  foo(NULL); // roept foo(long) aan
>>}
> 
> Dit vind ik levensgevaarlijke code. In zo'n geval kan het van de
> compilerversie afhangen welke van de 2 overoaded functies aangeroepen
> wordt. Leuk als je zoiets moet debuggen als het fout gaat. :-(

Eh? de C++ standaard is vrij duidelijk: het hangt niet van
de compilerversie af. De foo(long) wordt altijd aangeroepen.

Daarnaast: het zou eigenlijk niet moeten uitmaken welke versie
je pakt want ze doen toch hetzelfde. Als de functies verschillende
dingen doen, moet je ze andere namen geven.

>>Bottomline: dit soort details zorgt ervoor dat C en C++ toch als
>>verschillende programmeertalen moeten worden gezien.
> 
> Ja, al vind ik persoonlijk dat dat verschil zo klein mogelijk gemaakt zou
> moeten worden i.p.v. zo groot mogelijk, waar sommige C++ ontwerpers
> blijkbaar naar streven.

De C ontwerpers zijn dus ook niet zonder zonde: In gevallen waarin
C++ al voor een oplossing had gekozen voordat de C mensen erover gingen
praten, wisten ze regelmatig een nieuwe oplossing te vinden. Dit alles
lijkt onder het mom "het kan ons geen moer schelen hoe C++ het doet,
dit is voor C het handigst" te gebeuren. Bij C++ geldt in ieder geval
nog: "as close to C as possible, but no closer".

Maar gelukkig zijn de verschillen klein en wordt er wel geprobeerd
om ze klein te houden. Maar helemaal weg zullen de verschillen nooit
gaan.

En zoals gezegd: dit verschil in type van NULL is in de praktijk
nauwelijks te merken.

Sjoerd
Technical Details
Message-ID: <41fed830$0$40088$ee9da40f@news.wanadoo.nl>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!news.glorb.com!news2.euro.net!postnews1.euro.net!news.wanadoo.nl!not-for-mail
References: <%XJId.2415$OZ2.252982@phobos.telenet-ops.be> <ct9k2f.4js.1@news.isolution.nl> <IAzIFp.1qJ@vulcan.xs4all.nl> <41fa3d30$0$96924$abc4f4c3@news.wanadoo.nl> <IB6JF0.2FL@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!news3.google.com!news.glorb.com!news2.euro.net!postnews1.euro.net!news.wanadoo.nl!not-for-mail
Date: Tue, 01 Feb 2005 02:15:27 +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> <ct9k2f.4js.1@news.isolution.nl> <IAzIFp.1qJ@vulcan.xs4all.nl> <41fa3d30$0$96924$abc4f4c3@news.wanadoo.nl> <IB6JF0.2FL@vulcan.xs4all.nl>
In-Reply-To: <IB6JF0.2FL@vulcan.xs4all.nl>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 69
Message-ID: <41fed830$0$40088$ee9da40f@news.wanadoo.nl>
Organization: Wanadoo
NNTP-Posting-Date: 01 Feb 2005 01:15:28 GMT
NNTP-Posting-Host: c3eea3bf1.cable.wanadoo.nl
X-Trace: 1107220528 snatched.euronet.nl 40088 62.234.59.241:1389
X-Complaints-To: abuse@wanadoo.nl