Article View: be.comp.programming
Article #9138Re: VC++ - God have mercy...
From: Dominique Devriese
Date: Sun, 26 May 2002 13:01
Date: Sun, 26 May 2002 13:01
79 lines
3157 bytes
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-mailReferences:
<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