[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [CPROG] Re: [NOVICE] C++



Frank Damgaard wrote:
> 
> Lau Sennels <sslug@sslug> wrote:
> .....
> 
> > Standarden formaliserer begrebet navnerum (namespace) som en metode
> > til at gruppere beslægtede deklarationer i samme (u)navngivne scope.
> > Ifølge standarden er elementer i i standard c++ biblioteket defineret
> > i navnerummet std (namespace std). Med #include<iostream.h> deklarerer
> > man iostream-klassen i det globale navnerum, hvilket "forurener" det.
> > Pointen er at holde indholdet af std, elementerne i stdlib, i et scope
> > for sig fra programmets globale scope.

> Det er også ok, ved større programmer, og når skal man lave
> "pædagogiske" eksempler .

Ikke for at være pedantisk: nej. Det er væsentligt for alle
programmer man skriver. Det adskiller sig på sin vis ikke fra
at returnere en int istedet for void fra main(). Blot er std
navnerummet fundamentalt for designet af C++-sproget. Jeg
synes egentlig ikke der er så meget at diskutere. Hvis man 
bestræber sig på at skrive kode efter standarden, overholder
man naturligvis også navenrums-specifikationerne. Udover de
specifikke grunde relateret til namespace-konstruktion (at
have kontrol over hvilke namerum der overlapper og hvilke der
er deklareret hvor) handler det om at skrive kode der også
kan compilere når de tilgængelige compilere efterhånden
overholder standarden. Den gamle include- syntaks er forældet.
At gcc og GNU libstdc++, (endnu) ikke implementerer std
korrekt er en anden ting.


> Jeg anvender dog ofte "static" på variable der kun skal eksistere
> i samme fil, så fourener de ikke andre steder ved linkning.
> Desuden sparer det (marginalt) lidt tid da der er færre variable der 
> skal exportes ved linkning.

Det må du lige uddybe. Hvad har det med navnerum at gøre?

> > std::cout << "Test\n";
> ...
> 
> Dette er bøvlet, da man skal huske std:: foran alt i std:,
> men er det kun få steder variablen anvendes , så er det til at overkomme.

Det er den "rigtige" måde at gøre det på i include-filer. På
den måde undgår man at slæbe navnerums-dumps i en oversættelses-
enhed over i alle andre der referer til den pågældende include.  


-- 
Mvh
Lau Sennels


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 20:08 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *