/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
hjælp til newbie.
Fra : Martin Jørgensen


Dato : 13-03-04 22:09

Hej NG.

Jeg har købt et lille IDG-hæfte af Kris Jamsa (håber ikke det er
forældet)...

Jeg tænkte at når jeg nu har hørt at det ligner java, så kunne jeg godt
tænke mig at lære begge dele lidt at kende... Men nu har jeg prøvet 3
programmer og de virker ikke. Kan i ikke fortælle mig hvad der er galt?

Jeg kører Mandrake linux 9.2 og bruger gcc-compileren og g++-compileren.

Koden jeg f.eks. ikke kan få til at du ser således ud:

include <iostream.h>

void main(void)
{
int alder = 32;
float gage = 25000.75;
long afstand_til_maanen = 238857;

cout << "Medarbejderen er " << alder << " år gammel" << endl;
cout << "Medarbejderens månedsløn er kr. " << gage << endl;
cout << "Månen er " << afstand_til_maanen << " km. fra Jorden" << endl;
}

Når jeg kompilerer, får jeg beskeden:

[martin@virus Work]$ g++ first_c++program.cpp
In file included from /usr/include/c++/3.3.1/backward/iostream.h:31,
from first_c++program.cpp:1:
/usr/include/c++/3.3.1/backward/backward_warning.h:32:2: warning: #warning
This file includes at least one deprecated or antiquated header. Please
consider using one of the 32 headers found in section 17.4.1.2 of the C++
standard. Examples include substituting the <X> header for the <X.h> header
for C++ includes, or <sstream> instead of the deprecated header
<strstream.h>. To disable this warning use -Wno-deprecated.
first_c++program.cpp:4: error: `main' must return `int'

Nogen der kan fortælle mig, hvad der går galt?

mvh.
Martin Jørgensen

--
---------------------------------------------------------------------------
Home of Martin Jørgensen - http://www.martinjoergensen.dk

 
 
Jesper Louis Anderse~ (13-03-2004)
Kommentar
Fra : Jesper Louis Anderse~


Dato : 13-03-04 22:46

In article <40537867$0$226$edfadb0f@dread12.news.tele.dk>,
Martin Jørgensen wrote:
>

> include <iostream.h>

Det der er den foerste fejl. I dagens standard C++ saetter man ikke .h
bag paa include-direktiver:

#include <iostream>

> void main(void)


Der er den anden fejl. main() funktionen skal returnere en int. Denne
int angiver om programmet afsluttedes korrekt (virkede) eller med en
fejl. Jeg er ikke klar over hvordan man henter de 2 kanoniske exit-codes
EXIT_SUCCESS og EXIT_FAILURE ind i C++, men i C ligger de i stdlib.h.
int main(void) { ...

--
j. - der ikke har kodet C++ i et stykke tid nu.

Bertel Brander (13-03-2004)
Kommentar
Fra : Bertel Brander


Dato : 13-03-04 23:16

Jesper Louis Andersen wrote:
> In article <40537867$0$226$edfadb0f@dread12.news.tele.dk>,
> Martin Jørgensen wrote:
>
>
>>include <iostream.h>
>
>
> Det der er den foerste fejl. I dagens standard C++ saetter man ikke .h
> bag paa include-direktiver:
>
> #include <iostream>

Derved bliver diverse standard typer, class'er osv. puttet ind i std
namespacet, så vi skal have:

using std::cout;
using std::endl;

Eller

using namespace std;

>
>>void main(void)
>
>
>
> Der er den anden fejl. main() funktionen skal returnere en int. Denne
> int angiver om programmet afsluttedes korrekt (virkede) eller med en
> fejl. Jeg er ikke klar over hvordan man henter de 2 kanoniske exit-codes
> EXIT_SUCCESS og EXIT_FAILURE ind i C++, men i C ligger de i stdlib.h.
> int main(void) { ...
>

Så vidt jeg ved behøver man ikke at returnere noget fra main, men ellers
ligger EXIT_SUCCESS og EXIT_FAILURE vist i cstdlib

/b


Mogens Hansen (14-03-2004)
Kommentar
Fra : Mogens Hansen


Dato : 14-03-04 07:25

Martin Jørgensen wrote:
> Hej NG.
>
> Jeg har købt et lille IDG-hæfte af Kris Jamsa (håber ikke det er
> forældet)...

Det er ikke blot forældet - det har _aldrig_ været tidssvarende!

På trods af at jeg har kigget _grundigt_ efter er det ikke lykkedes at
finde et eneste eksempel i hæftet der er formelt korrekt og dermed kan
oversættes med en compiler der overholder C++ Standarden.

Derfor har du det problem du har nu.

Læg dertil at bogen lærer de mindst brugbare dele af C++ først (f.eks.
preprocessoren) og fuldstændigt springer over de mest nyttige dele (C++
Standard library klasser som std::string, std::vector og std::map)

Glæd dig over at hæftet var billigt - det mindsker forskellen mellem
hvad du betalte og brændværdien


>
> Jeg tænkte at når jeg nu har hørt at det ligner java, så kunne jeg godt
> tænke mig at lære begge dele lidt at kende... Men nu har jeg prøvet 3
> programmer og de virker ikke. Kan i ikke fortælle mig hvad der er galt?

Bruger den forkerte kilde.

Få fat på bogen
Accelerated C++
Andrew Koenig, Barbara E. Moo
ISBN 0-201-70353-X
det er en rigtig god introduktion til moderne C++.
Du vil iøvrigt bemærke at C++ på trods syntaktiske ligheder med Java er
temmelig forskellig. F.eks. er der væsentlig forskel på hvorledes
hukommelse styres - der er langt sjældnere brug for at skrive "new".

>
> Jeg kører Mandrake linux 9.2 og bruger gcc-compileren og g++-compileren.

Overvej eventuelt at installere udviklingsmiljøet KDevelop via Mandrake
Control Center - så har du en editor og debugger lige ved hånden.

>
> Koden jeg f.eks. ikke kan få til at du ser således ud:
>
> include <iostream.h>

Det er (som compileren siger) forældet

Det hedder
"include <iostream>

>
> void main(void)

Det har _aldrig_ været tilladt at lade main returnere void - det er int.



Prøv
<C++ kode>
#include <iostream>

int main()
{
using namespace std;

int alder = 32;
float gage = 25000.75;
long afstand_til_maanen = 238857;

cout << "Medarbejderen er " << alder << " år gammel" << endl;
cout << "Medarbejderens månedsløn er kr. " << gage << endl;
cout << "Månen er " << afstand_til_maanen << " km. fra Jorden" << endl;
<C++ kode/>

Det virker her:
[mogens@shuttle tmp]$ cat fnyt.cpp
#include <iostream>

int main()
{
using namespace std;

int alder = 32;
float gage = 25000.75;
long afstand_til_maanen = 238857;

cout << "Medarbejderen er " << alder << " år gammel" << endl;
cout << "Medarbejderens månedsløn er kr. " << gage << endl;
cout << "Månen er " << afstand_til_maanen << " km. fra Jorden" << endl;
}
[mogens@shuttle tmp]$ g++ fnyt.cpp -o fnyt
[mogens@shuttle tmp]$ ./fnyt
Medarbejderen er 32 år gammel
Medarbejderens månedsløn er kr. 25000.8
Månen er 238857 km. fra Jorden
[mogens@shuttle tmp]$


Venlig hilsen

Mogens Hansen


Mogens Hansen (14-03-2004)
Kommentar
Fra : Mogens Hansen


Dato : 14-03-04 08:53

Mogens Hansen wrote:

Der var et par sjuske fejl - håber ikke det har forvirret for meget.
Den korrekte kode stod i console dumpet.

[8<8<8<]
> Det hedder
> "include <iostream>
--^

Der var en slå-fejl:
#include <iostream>


Og en til. hvor der mangler en slut tuborg parentes
> cout << "Månen er " << afstand_til_maanen << " km. fra Jorden" << endl;
> <C++ kode/>

cout << "Månen er " << afstand_til_maanen << " km. fra Jorden" << endl;
}
<C++ kode/>

Venlig hilsen

Mogens Hansen


Sander Broni Pederse~ (14-03-2004)
Kommentar
Fra : Sander Broni Pederse~


Dato : 14-03-04 09:57

Mogens Hansen wrote:

> Martin Jørgensen wrote:
> > Hej NG.
> >
> > Jeg har købt et lille IDG-hæfte af Kris Jamsa (håber ikke det er
> > forældet)...
>
> Det er ikke blot forældet - det har _aldrig_ været tidssvarende!
>
> På trods af at jeg har kigget _grundigt_ efter er det ikke lykkedes at
> finde et eneste eksempel i hæftet der er formelt korrekt og dermed kan
> oversættes med en compiler der overholder C++ Standarden.
>
> Derfor har du det problem du har nu.
>
> Læg dertil at bogen lærer de mindst brugbare dele af C++ først (f.eks.
> preprocessoren) og fuldstændigt springer over de mest nyttige dele (C++
> Standard library klasser som std::string, std::vector og std::map)
>
> Glæd dig over at hæftet var billigt - det mindsker forskellen mellem
> hvad du betalte og brændværdien
>
>
> >
> > Jeg tænkte at når jeg nu har hørt at det ligner java, så kunne jeg godt
> > tænke mig at lære begge dele lidt at kende... Men nu har jeg prøvet 3
> > programmer og de virker ikke. Kan i ikke fortælle mig hvad der er galt?
>
> Bruger den forkerte kilde.
>
> Få fat på bogen
> Accelerated C++
> Andrew Koenig, Barbara E. Moo
> ISBN 0-201-70353-X
> det er en rigtig god introduktion til moderne C++.
> Du vil iøvrigt bemærke at C++ på trods syntaktiske ligheder med Java er
> temmelig forskellig. F.eks. er der væsentlig forskel på hvorledes
> hukommelse styres - der er langt sjældnere brug for at skrive "new".
>
> >
> > Jeg kører Mandrake linux 9.2 og bruger gcc-compileren og g++-compileren.
>
> Overvej eventuelt at installere udviklingsmiljøet KDevelop via Mandrake
> Control Center - så har du en editor og debugger lige ved hånden.
>
> >
> > Koden jeg f.eks. ikke kan få til at du ser således ud:
> >
> > include <iostream.h>
>
> Det er (som compileren siger) forældet
>
> Det hedder
> "include <iostream>
>
> >
> > void main(void)
>
> Det har _aldrig_ været tilladt at lade main returnere void - det er int.
>
>
>
> Prøv
> <C++ kode>
> #include <iostream>
>
> int main()
> {
> using namespace std;
>
> int alder = 32;
> float gage = 25000.75;
> long afstand_til_maanen = 238857;
>
> cout << "Medarbejderen er " << alder << " år gammel" << endl;
> cout << "Medarbejderens månedsløn er kr. " << gage << endl;
> cout << "Månen er " << afstand_til_maanen << " km. fra Jorden" << endl;
> <C++ kode/>
>
> Det virker her:
> [mogens@shuttle tmp]$ cat fnyt.cpp
> #include <iostream>
>
> int main()
> {
> using namespace std;
>
> int alder = 32;
> float gage = 25000.75;
> long afstand_til_maanen = 238857;
>
> cout << "Medarbejderen er " << alder << " år gammel" << endl;
> cout << "Medarbejderens månedsløn er kr. " << gage << endl;
> cout << "Månen er " << afstand_til_maanen << " km. fra Jorden" << endl;
> }
> [mogens@shuttle tmp]$ g++ fnyt.cpp -o fnyt
> [mogens@shuttle tmp]$ ./fnyt
> Medarbejderen er 32 år gammel
> Medarbejderens månedsløn er kr. 25000.8
> Månen er 238857 km. fra Jorden
> [mogens@shuttle tmp]$
>
>
> Venlig hilsen
>
> Mogens Hansen
>

Hvilken bog bør man så kigge på?

Mvh
Sander Broni Pedersen

Kent Friis (14-03-2004)
Kommentar
Fra : Kent Friis


Dato : 14-03-04 15:07

Den Sun, 14 Mar 2004 09:56:50 +0100 skrev Sander Broni Pedersen:
>Mogens Hansen wrote:
>
>> Få fat på bogen
>> Accelerated C++
>> Andrew Koenig, Barbara E. Moo
>> ISBN 0-201-70353-X
>> det er en rigtig god introduktion til moderne C++.
>> Du vil iøvrigt bemærke at C++ på trods syntaktiske ligheder med Java er
>> temmelig forskellig. F.eks. er der væsentlig forskel på hvorledes
>> hukommelse styres - der er langt sjældnere brug for at skrive "new".
>
>Hvilken bog bør man så kigge på?

Overså du ovenstående?

Mvh
Kent
--
Help test this great MMORPG game - http://www.eternal-lands.com/

Sander Broni Pederse~ (14-03-2004)
Kommentar
Fra : Sander Broni Pederse~


Dato : 14-03-04 19:26

Kent Friis wrote:

> Den Sun, 14 Mar 2004 09:56:50 +0100 skrev Sander Broni Pedersen:
>
>>Mogens Hansen wrote:
>>
>>
>>>Få fat på bogen
>>> Accelerated C++
>>> Andrew Koenig, Barbara E. Moo
>>> ISBN 0-201-70353-X
>>>det er en rigtig god introduktion til moderne C++.
>>>Du vil iøvrigt bemærke at C++ på trods syntaktiske ligheder med Java er
>>>temmelig forskellig. F.eks. er der væsentlig forskel på hvorledes
>>>hukommelse styres - der er langt sjældnere brug for at skrive "new".
>>
>>Hvilken bog bør man så kigge på?
>
>
> Overså du ovenstående?
>
> Mvh
> Kent
Det tror jeg nu nok jeg gjorde :\

Mvh
Sander

Martin Jørgensen (14-03-2004)
Kommentar
Fra : Martin Jørgensen


Dato : 14-03-04 16:04

Mogens Hansen wrote:

> Martin Jørgensen wrote:
> > Hej NG.
> >
> > Jeg har købt et lille IDG-hæfte af Kris Jamsa (håber ikke det er
> > forældet)...
>
> Det er ikke blot forældet - det har _aldrig_ været tidssvarende!

Okay...

Øv. Jeg syntes nemlig ikke rigtigt at jeg har tid nok til at læse en stor og
tyk bog igennem...

-snip-
> Glæd dig over at hæftet var billigt - det mindsker forskellen mellem
> hvad du betalte og brændværdien

Okay, så må jeg glæde mig over det

-snip-
> Få fat på bogen
> Accelerated C++
> Andrew Koenig, Barbara E. Moo
> ISBN 0-201-70353-X
> det er en rigtig god introduktion til moderne C++.
> Du vil iøvrigt bemærke at C++ på trods syntaktiske ligheder med Java er
> temmelig forskellig. F.eks. er der væsentlig forskel på hvorledes
> hukommelse styres - der er langt sjældnere brug for at skrive "new".

Okay, er der ikke nogen lidt tyndere bøger? Jeg syntes at 352 sider er
meget, når jeg også gerne vil lære en hel masse andet såsom lidt php, lidt
java og lidt latex. Hvis halvdelen af bogen er et opslagsværk, så hjælper
det også en hel del på læselysten (så skal jeg ikke læse så meget)

> > Jeg kører Mandrake linux 9.2 og bruger gcc-compileren og
> > g++-compileren.
>
> Overvej eventuelt at installere udviklingsmiljøet KDevelop via Mandrake
> Control Center - så har du en editor og debugger lige ved hånden.

Ok, den er nu installeret. Jeg vender tilbage hvis der er problemer...

-snip-
> Det har _aldrig_ været tilladt at lade main returnere void - det er int.

Så må forfatteren af bogen altså være et fjols... Jeg syntes at det er ret
pinligt at trykke sådan en bog, hvis det virkeligt står så slemt til som du
giver udtryk for...

> Prøv
> <C++ kode>
> #include <iostream>
>
> int main()
> {
> using namespace std;

Hvad betyder det der "using namespace std"? Jeg vil gerne læse bogen igennem
og så måske bare rette eksemplerne til, således at de forhåbentligt virker
uden de store problemer...

-snip-
> Det virker her:

Det gør det også her
Jubii

Jeg håber ikke at alle de andre eksempler i bogen er svære at omskrive til
almindelig, gængs c++. Men hvis jeg husker int foran main() og at fjerne .h
i #include-sætningerne, håber jeg at jeg kan komme igennem bogen på
tilfredsstillende vis. Det er da det mindste man må kunne forvente, når jeg
nu har smidt kr.69,- i denne bog.

Ellers nogen forslag?

mvh.
Martin Jørgensen

--
---------------------------------------------------------------------------
Home of Martin Jørgensen - http://www.martinjoergensen.dk

Kasper Larsen (14-03-2004)
Kommentar
Fra : Kasper Larsen


Dato : 14-03-04 19:15


"Martin Jørgensen" <unoder.spam@jay.spam.net> skrev i en meddelelse
news:40547469$0$199
> Øv. Jeg syntes nemlig ikke rigtigt at jeg har tid nok til at læse en stor
og
> tyk bog igennem...
>
Så er C++ ikke noget for dig. C++ er et meget 'stort' sprog og der er
_ingen_ genveje !
> > Få fat på bogen
> > Accelerated C++
> > Andrew Koenig, Barbara E. Moo
> > ISBN 0-201-70353-X
> > det er en rigtig god introduktion til moderne C++.
> > Du vil iøvrigt bemærke at C++ på trods syntaktiske ligheder med Java er
> > temmelig forskellig. F.eks. er der væsentlig forskel på hvorledes
> > hukommelse styres - der er langt sjældnere brug for at skrive "new".
>
> Okay, er der ikke nogen lidt tyndere bøger? Jeg syntes at 352 sider er
> meget, når jeg også gerne vil lære en hel masse andet såsom lidt php, lidt
> java og lidt latex. Hvis halvdelen af bogen er et opslagsværk, så hjælper
> det også en hel del på læselysten (så skal jeg ikke læse så meget)
>
352 sider er en _meget_ tynd bog i C++ sammenhæng. Forvent at bruge min ½ år
på at læse C++ ( mere hvis du kun bruger det fra tid til anden ).

C++ er blevet sammenlignet med et haglgevær ( kraftigt og effektivt ), men
hvis du laver en brøler risikerer du at blæse begge ben af



Mogens Hansen (14-03-2004)
Kommentar
Fra : Mogens Hansen


Dato : 14-03-04 19:27

Martin Jørgensen wrote:

[8<8<8<]
> Øv. Jeg syntes nemlig ikke rigtigt at jeg har tid nok til at læse en stor og
> tyk bog igennem...

Den bog jeg henviste til (Accelerated C++) er ikke stor, i forhold til
hvad den når at gennemgå - knap 300 sider, som er letlæste.

[8<8<8<]
> Okay, er der ikke nogen lidt tyndere bøger? Jeg syntes at 352 sider er
> meget, når jeg også gerne vil lære en hel masse andet såsom lidt php, lidt
> java og lidt latex. Hvis halvdelen af bogen er et opslagsværk, så hjælper
> det også en hel del på læselysten (så skal jeg ikke læse så meget)

Bogen er ikke primært et opslagsværk, men en lærebog.
Men den viser ikke kun hvad C++ er, men viser (nok så vigtigt) også en
række fornufte design teknikker (f.eks. invarians i løkker) og design.


[8<8<8<]
> Så må forfatteren af bogen altså være et fjols... Jeg syntes at det er ret
> pinligt at trykke sådan en bog, hvis det virkeligt står så slemt til som du
> giver udtryk for...

Enig - det er derfor jeg gør så tydeligt opmærksom på det hver gang jeg
ser nogen bruger den eller anbefaler den.

[8<8<8<]
> Hvad betyder det der "using namespace std"? Jeg vil gerne læse bogen igennem
> og så måske bare rette eksemplerne til, således at de forhåbentligt virker
> uden de store problemer...

Der er et navnerum der hedder "std", hvor alle funktioner og klasser i
C++ Standard library er defineret. Når man skriver "unsing namespace
std" siger man at man gør alle ting i det namespace tilgængelig uden
yderligere angivelse.
Det er beskrevet på side 3 i Accelerated C++.

[8<8<8<]
> Jeg håber ikke at alle de andre eksempler i bogen er svære at omskrive til
> almindelig, gængs c++

Glem det - for som jeg sagde så lægger den også vægten på de forkerte
steder.
Den vsiser tåbelige konstruktiktioner, hvor langt bedre alternativer
findes, selv hvis man omskriver det til formelt korrekt C++.
Den springer de aller mest nyttige ting fuldstændig over.

> Men hvis jeg husker int foran main() og at fjerne .h
> i #include-sætningerne, håber jeg at jeg kan komme igennem bogen på
> tilfredsstillende vis. Det er da det mindste man må kunne forvente, når jeg
> nu har smidt kr.69,- i denne bog.

Du har spildt kr. 69 - vil du også spilde din tid ?

>
> Ellers nogen forslag?

Hvis du vil lære C++ kræver det en indsats.
De 300 sider i Accelerated C++ er kun en god begyndelse.

Venlig hilsen

Mogens Hansen


Martin Jørgensen (15-03-2004)
Kommentar
Fra : Martin Jørgensen


Dato : 15-03-04 20:18

Mogens Hansen wrote:
-snip-
> Du har spildt kr. 69 - vil du også spilde din tid ?

Okay, du lyder ret overbevisende så jeg tror at jeg vil følge dit råd

> Hvis du vil lære C++ kræver det en indsats.
> De 300 sider i Accelerated C++ er kun en god begyndelse.

Okay, mange tak for hjælpen til dig og jer andre... Så vil jeg bestille den
bog, fluks med det samme

mvh.
Martin Jørgensen

--
---------------------------------------------------------------------------
Home of Martin Jørgensen - http://www.martinjoergensen.dk

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409079
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste