🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #9138

Re: VC++ - God have mercy...

#9138
From: Dominique Devriese
Date: Sun, 26 May 2002 13:01
79 lines
3157 bytes
--=-=-=
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

"HDC" <dreamscape@village.uunet.be> writes:

> Ik neem nog een asperine terwijl ik tracht uit te vissen wat mijn VC++
> linker me probeert te vertellen.
> Het mooie van de zaak is dat alles wel werkt, ik negeer die vervloekingen
> van VC++ gewoon (h�, dat klinkt bekend, sounds like marriage hahahahahaha)
> Zal er een zwart gat ontstaan als ik dit blijf doen? Hoe los ik dit op? Het
> heeft iets te maken met includes denk ik.
> 
> Desperatly seeking HDC
> dreamscape@village.uunet.be

--=-=-=
Content-Type: text/plain; charset=iso-8859-15
Content-Transfer-Encoding: 8bit


Het probleem is dat je headers twee keer include in ��n file:
als jij de volgende files hebt:

[header.h]
class EenKlasse
{
public:
        int eenInt;
};
[header2.h]
#include "header.h"
void tralala (EenKlasse a);
[main.cpp]
#include "header.h"
#include "header2.h"
int main (int argc, char** argv)
{
return 0;
};

dan ziet main.cpp er na al je includes zo uit:
class EenKlasse
{
public:
        int eenInt;
};
class EenKlasse
{
public:
        int eenInt;
};
void tralala (EenKlasse a);
int main (int argc, char** argv)
{
return 0;
};

De compiler denkt dus dat je twee klassen met dezelfde naam hebt
(volgens de compiler alleszins).  De oplossing is:
"header-protection", aka "include-guards".
D.w.z. dat je bovenaan elke header zet:
#ifndef HEADERNAAM_H
#define HEADERNAAM_H
en onderaan:
#endif // HEADERNAAM_H
Je zal deze dingen vinden in bijna elke C++ header, en het is niet
veel moeite om deze erbij te zetten (in mijn emacs duw ik gewoon op F7
:) (die toets is gebonden aan de functie "header-protection"...
Een ander probleem is dat je M$ VC++ gebruikt, een goede compiler (g++
bijvoorbeeld, die trouwens ook gratis en vrij is, en zelfs een
winblows-versie heeft (zoek eens naar mingw32 op google)...) zal geen
warning geven maar een error, en er gewoon mee ophouden.
Je zou namelijk maar eens echt twee klassen dezelfde naam gegeven
kunnen hebben...
sjuus
domi

--=-=-=--
Technical Details
Message-ID: <87n0uncbf5.fsf@pandora.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!peer.news.opaltelecom.net!newsfeed.icl.net!news-x2.support.nl!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
References: <acjr8j$f2a$1@news.worldonline.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII
X-Google-Thread: fcea4,b5d2f2a279dee4ec
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2002-05-26 06:01:14 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!peer.news.opaltelecom.net!newsfeed.icl.net!news-x2.support.nl!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
Sender: domi@living
Newsgroups: be.comp.programming
Subject: Re: VC++ - God have mercy...
References: <acjr8j$f2a$1@news.worldonline.be>
From: Dominique Devriese <fritmebufstek@pandora.be>
User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2
Message-ID: <87n0uncbf5.fsf@pandora.be>
Lines: 68
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
Date: Sun, 26 May 2002 13:01:12 GMT
NNTP-Posting-Host: 213.118.142.182
X-Complaints-To: abuse@telenet.be
X-Trace: afrodite.telenet-ops.be 1022418072 213.118.142.182 (Sun, 26 May 2002 15:01:12 MET DST)
NNTP-Posting-Date: Sun, 26 May 2002 15:01:12 MET DST
Organization: Telenet Internet