|
| GCC program kan ikke compa Borland C++ Fra : Martin Moller Peders~ |
Dato : 23-04-01 13:51 |
|
Jeg har lavet to smaa programmer, som kompilerer fint uden
nogle warnings under g++ paa min linux-bog.
Men min svigerfar som skal bruge den, kan ikke compile dem under
Borland C++ compiler. Den kommer med en millard (naesten) forskellige
fejl, som jeg ikke kan genskue.
Hvis nogle vil give lidt hints til hvordan jeg faar programmet
kompileret under Borland C++, saa vil jeg blive glad.
Source-koderne kan findes under
http://www.daimi.au.dk/~tusk/janiss/
/Mvh
Martin
| |
Mogens Hansen (23-04-2001)
| Kommentar Fra : Mogens Hansen |
Dato : 23-04-01 14:21 |
|
Hej Martin,
"Martin Moller Pedersen" <tusk@daimi.au.dk> wrote in message
news:9c18g2$rdk$1@news.net.uni-c.dk...
> Jeg har lavet to smaa programmer, som kompilerer fint uden
> nogle warnings under g++ paa min linux-bog.
Hvad er det for en bog ?
Hvis du har en bog, hvor den kode står i vil jeg anbefale dig at anskaffe en
moderne C++ bog.
>
> Men min svigerfar som skal bruge den, kan ikke compile dem under
> Borland C++ compiler. Den kommer med en millard (naesten) forskellige
> fejl, som jeg ikke kan genskue.
En milliard ?
Jeg får det til 4-6 fejl for palidrom.cpp og 7 for fraction.cpp.
Hvilken version Borland C++ compiler bruger du ?
Jeg bruger Borland C++Builder V5.0 patch 1, som for compilerens vedkommende
svarer til den gratis C++ compiler V5.5.1 som kan downloades hos Borland.
Grunden til at dit progam ikke compilerer, er at det ikke er gyldige C++
programmer.
Du kan ikke have brugt en moderne C++ til at oversætte det med. Det kan
anbefales at du bør se at en der er up-to-date.
Koden er hverken gammel C++ eller moderne C++ - det er et mix af begge dele.
>
> Hvis nogle vil give lidt hints til hvordan jeg faar programmet
> kompileret under Borland C++, saa vil jeg blive glad.
>
Problemet er namespace.
I dine header filer skriver du:
* ostream - det hedder "std::ostream"
* string - det hedder "std::string"
I begge dine header filer (biginteger.h og fraction.h) har du implementeret
funktioner, uden at det er inline funktioner - det er noget rigtigt snavs.
I din palidrom.cpp skriver du:
* cout - det hedder "std::cout"
* cin - det hedder "std::cin"
eller prøv med using std::cout; og using std::cin;
I din fraction.cpp behøves du ikke at includere "iostream" - det ser ud til
at give problemer.
De compilerer hos mig, når jeg lige har rettet de par småfejl.
Venlig hilsen
Mogens Hansen
| |
Martin Moller Peders~ (23-04-2001)
| Kommentar Fra : Martin Moller Peders~ |
Dato : 23-04-01 21:43 |
|
In <3ae42af2$1@lxcs1.manbw.dk> "Mogens Hansen" <mogens_h@dk-online.dk> writes:
>Hej Martin,
>"Martin Moller Pedersen" <tusk@daimi.au.dk> wrote in message
>news:9c18g2$rdk$1@news.net.uni-c.dk...
>> Jeg har lavet to smaa programmer, som kompilerer fint uden
>> nogle warnings under g++ paa min linux-bog.
>Hvad er det for en bog ?
>Hvis du har en bog, hvor den kode står i vil jeg anbefale dig at anskaffe en
>moderne C++ bog.
Naeh. Det har jeg saamaend skrevet selv og jeg har ikke speciel erfaring til C++.
>>
>> Men min svigerfar som skal bruge den, kan ikke compile dem under
>> Borland C++ compiler. Den kommer med en millard (naesten) forskellige
>> fejl, som jeg ikke kan genskue.
>En milliard ?
>Jeg får det til 4-6 fejl for palidrom.cpp og 7 for fraction.cpp.
Jeg fik ogsaa en del fejl med nogle libraries.
>Hvilken version Borland C++ compiler bruger du ?
Hmm. Det husker jeg ikke. Nu sidder min svigerfar normalt 1500 kilometer vaek, men
i paasken fik jeg lige muligheden for at proeve selv paa hans maskine. Jeg aner intet
om windows eller Borland C++. Jeg er ogsaa vant til at makefile og ikke noget
project snavs, som Borlands forlanger.
Men jeg tror at det er en version 4.0.
>Jeg bruger Borland C++Builder V5.0 patch 1, som for compilerens vedkommende
>svarer til den gratis C++ compiler V5.5.1 som kan downloades hos Borland.
Ok. Saa vil jeg anbefale ham at faa en nyere version.
>Grunden til at dit progam ikke compilerer, er at det ikke er gyldige C++
>programmer.
Virkeligt ? Det kompilerer fint og uden nogle warning overhovedet under GCC.
>Problemet er namespace.
Ok. Det begreb har jeg heller ikke forstaaet 100%.
>I dine header filer skriver du:
> * ostream - det hedder "std::ostream"
> * string - det hedder "std::string"
Ok. Det havde jeg overset, da jeg jo har skrevet "using namespace std" i .cpp-filerne.
>I begge dine header filer (biginteger.h og fraction.h) har du implementeret
>funktioner, uden at det er inline funktioner - det er noget rigtigt snavs.
Hvorfor det ?
>I din palidrom.cpp skriver du:
> * cout - det hedder "std::cout"
> * cin - det hedder "std::cin"
>eller prøv med using std::cout; og using std::cin;
Selvom jeg har skrevet "using namespace std" ?
>I din fraction.cpp behøves du ikke at includere "iostream" - det ser ud til
>at give problemer.
Ok. Det bliver saa inkluderet to gange ? Er det ikke en fejl i Borlands kompilerer.
>De compilerer hos mig, når jeg lige har rettet de par småfejl.
OK. Det vil jeg fortaelle svigerfar, saa han kan proeve igen.
Tusind tak for hjaelpen. Det lader til at det ikke er nok at koden
kompilerer 100% uden fejl under GCC. Det er vist tid til at jeg faar mine
C++-boeger tilbage.
Mvh
Martin
| |
Mogens Hansen (24-04-2001)
| Kommentar Fra : Mogens Hansen |
Dato : 24-04-01 03:40 |
|
Hej Martin,
"Martin Moller Pedersen" <tusk@daimi.au.dk> wrote in message
news:9c245e$15fu$1@news.net.uni-c.dk...
>
> >I begge dine header filer (biginteger.h og fraction.h) har du
implementeret
> >funktioner, uden at det er inline funktioner - det er noget rigtigt
snavs.
>
> Hvorfor det ?
Fordi, hvis du inkluderer den samme header-fil i flere CPP filer i et større
program - hvilket er almindeligt - så kommer der flere implementeringer af
den samme funktion, hvilket typisk vil give linker fejl.
>
> >I din fraction.cpp behøves du ikke at includere "iostream" - det ser ud
til
> >at give problemer.
>
> Ok. Det bliver saa inkluderet to gange ? Er det ikke en fejl i Borlands
kompilerer.
Det kiggede jeg ikke så grundigt på, så jeg kan sige det med sikkerhed.
Venlig hilsen
Mogens Hansen
| |
Martin Moller Peders~ (24-04-2001)
| Kommentar Fra : Martin Moller Peders~ |
Dato : 24-04-01 09:24 |
|
In <9c2p02$2ej1$1@news.cybercity.dk> "Mogens Hansen" <mogens_h@dk-online.dk> writes:
>Hej Martin,
>"Martin Moller Pedersen" <tusk@daimi.au.dk> wrote in message
>news:9c245e$15fu$1@news.net.uni-c.dk...
>>
>> >I begge dine header filer (biginteger.h og fraction.h) har du
>implementeret
>> >funktioner, uden at det er inline funktioner - det er noget rigtigt
>snavs.
>>
>> Hvorfor det ?
>Fordi, hvis du inkluderer den samme header-fil i flere CPP filer i et større
>program - hvilket er almindeligt - så kommer der flere implementeringer af
>den samme funktion, hvilket typisk vil give linker fejl.
Men det er vel ikke noget problem, da jeg har skrevet
#ifndef __BIGINTEGER_H__
#define __BIGINTEGER_H__
"koden"
#endif
da indholdet af .h-filen kun bliver loest en gang.
Mvh
/Martin
| |
Mogens Hansen (24-04-2001)
| Kommentar Fra : Mogens Hansen |
Dato : 24-04-01 10:19 |
|
Hej Martin,
"Martin Moller Pedersen" <tusk@daimi.au.dk> wrote in message
news:9c3d7o$rsg$1@news.net.uni-c.dk...
> In <9c2p02$2ej1$1@news.cybercity.dk> "Mogens Hansen"
<mogens_h@dk-online.dk> writes:
>
> >Fordi, hvis du inkluderer den samme header-fil i flere CPP filer i et
større
> >program - hvilket er almindeligt - så kommer der flere implementeringer
af
> >den samme funktion, hvilket typisk vil give linker fejl.
>
> Men det er vel ikke noget problem, da jeg har skrevet
Jo - det er et problem.
>
> #ifndef __BIGINTEGER_H__
> #define __BIGINTEGER_H__
>
> "koden"
>
> #endif
>
> da indholdet af .h-filen kun bliver loest en gang.
Per compilerings enhed (CPP fil)
Der kan - og vil typisk - indgå _mange_ CPP filer i et projekt, som så af
linkeren bliver lavet til en eksekverbar fil.
Venlig hilsen
Mogens Hansen
| |
Igor V. Rafienko (24-04-2001)
| Kommentar Fra : Igor V. Rafienko |
Dato : 24-04-01 11:18 |
|
* Martin Moller Pedersen
> Men det er vel ikke noget problem, da jeg har skrevet
>
> #ifndef __BIGINTEGER_H__
> #define __BIGINTEGER_H__
Navn som inneholder __ er reservert for all bruk i alle kontekster til
implementasjonen. Mao. don't do that.
ivr
--
The only "intuitive" interface is the nipple. After that, it's all learned.
(Bruce Ediger, bediger@teal.csn.org, in comp.os.linux.misc, on X interfaces.)
| |
|
|