Avatar billede s Nybegynder
21. december 1999 - 11:42 Der er 14 kommentarer og
2 løsninger

Nemt C++ spørgsmål

Ok... jeg har lige erhvervet mig en bog omkring C++ og vil til så smådt at begynde.
Jeg støder så på det mest simple eksempel i bogen og forsøger mig med det.
Det er jo klart at jeg behøver en C++ -compiler. Så jeg henter DJGPP.
Mit program:

#include <iostream.h>

void main(void)
{
    cout << "Programmering i C++!";
}

Jeg forsøger mig så med følgende i dos-promten:
gcc -c -Wall start.cc
(sourchen hedder start.cc)
men compileren kommer med fejlen:

start.cc:4: return type for 'main' changed to 'int'

Hvad er der galt???
Avatar billede dmk Nybegynder
21. december 1999 - 11:55 #1
Det ser ikke ud til at man kan lave en void main(). Du bliver nødt til at lave det til en int main(), da linux faktisk forvente at få en retur-værdi.

Det eneste du så skal gøre er, at returnere 0 efter din cout.

(tror jeg...)


DMK
Avatar billede bjarke Nybegynder
21. december 1999 - 12:40 #2
Det er rigtigt. Det er nok fordi din DJGPP compiler forventer, at du bruger standarden ANSI (eller hvad den nu hedder). I følge den, så er main() en int, dvs, at du skal lave dit program om til:

int main()  // void i parantesen behøves ikke - det betyder bare tom, som den jo tydeligvis er
{
  cout << "Programmering i C++!";
  return 0;
}

Normalt returneres en værdi forskellig fra 0, hvis der er opstået en fejl i programmet.

-Bjarke

PS: Hvis det skal være helt rigtigt, så skal det vist være:

int main(int argc, char* argv[])
{
  ....
  return VALUE;  // Hvor VALUE er en int værdi
}
Avatar billede bjarke Nybegynder
21. december 1999 - 13:16 #3
Når main() ændres fra void (=tom/ingenting) til int, betyder det at main() ændres fra ikke at returnere noget til at returnere en int (heltal -32768 til 32767 vistnok).

Returværdien er en værdi, som bliver returneret til styresystemet. Værdien kan f.eks. bruges i (de gammeldags) bat-filer til dos vha kommandoen errorlevel. Hvis det ikke siger dig noget, så har du nok heller ikke brug for det og behøver ikke at bekymre dig om det (i hvert fald ikke foreløbig).
Avatar billede s Nybegynder
21. december 1999 - 14:58 #4
Jo... det siger mig godt nok noget, men i den bog jeg har købt (C++, Kris Jamsa) står et eksempel skrevet som jeg skrev det ovenfor... prøver lige jeres kode...
Avatar billede dmk Nybegynder
21. december 1999 - 15:04 #5
Det er også rigtigt, man KAN godt lave en void main() funktion i c++... I Windows/Dos ! Desværre accepterer Linux ikke at man laver en void, da linux SKAL bruge en returværdi fra programmerne... Sorry! Men der er vel heller ikke noget problem i at lave en int main() ?


DMK
Avatar billede s Nybegynder
21. december 1999 - 15:05 #6
Nu kan koden godt nok kompileres, men efter dette kommer der kun en fil som hedder start.o .
Hvordan kompiler jeg min fil så jeg får en .exe fil?
Har nogle evt. et forslag til en bedre share/freeware-compiler?
Avatar billede s Nybegynder
21. december 1999 - 15:06 #7
dmk >> jeg bruger Windows/Dos...
Avatar billede s Nybegynder
21. december 1999 - 15:07 #8
Jeg har ikke Linux installeret
Avatar billede s Nybegynder
21. december 1999 - 15:21 #9
Kenner nogle en windows-baseret freeware compiler?
Avatar billede dmk Nybegynder
21. december 1999 - 15:27 #10
Wooops, det må du undskylde! Jeg troede helt klart at du havde linux, ud fra den syntaks du skriver til din compiler.

For at compile noget til en exe skal man sætte en eller anden compiler-option på. Jeg kan desværre ikke svare dig på hvad det er for en option, da jeg ikke kender den pågældende compiler.

DMK
Avatar billede s Nybegynder
21. december 1999 - 16:34 #11
Kender du en bedre share/freeware compiler?
Avatar billede dmk Nybegynder
21. december 1999 - 16:36 #12
Jeg er bange for, at jeg ikke kender nogen share/freeware compiler.

DMK
Avatar billede bjarke Nybegynder
21. december 1999 - 19:01 #13
Hej s

Jeg har lige prøvet på unix i dag med følgende:
gcc source.c -o somename.exe
Måske kan du også bruge det?!

Ellers prøv noget i retning af:
gpp source.cc -o somename.exe
Ellers skal jeg lige se om jeg kan finde ud af noget i morgen, hvis du ikke kan bruge noget af ovenstående.

Mht til freeware/shareware compilere, så er al viden på området vist vredet ud gennem de utallige spørgsmål der har været om netop det. Så den hjælp der er at få kan du få ved at kigge i besvarede spørgsmål - der er et hav af dem :-)

Når du nu ved hvad det drejer sig om, og du kender advarslen og programmet compiler fint nok, så kan du jo bare fortsætte med at lave void main() programmer.

-Bjarke
Avatar billede s Nybegynder
22. december 1999 - 22:09 #14
Jeg har downloadet den fulde version af Borland C++Builder 4 (60 dages trial, 180 mb.)
Så nu vil jeg prøve mig frem med den istedet...
Avatar billede dmk Nybegynder
23. december 1999 - 11:17 #15
Nu er Borland jo noget lidt andet end bare en compiler. Man kan hurtigt få lavet mange programmer uden rigtigt at lære noget c++.

Det jeg vil foreslå dig er, at du laver console-applications, så du ikke fristes til "bare" at lave brugergrænseflader vha. drag-drop. Det lærer man ikke så meget programmering af, og den smule programmering man laver vil ikke være alt for designmæssig rigtig, da det meste kode kommer til at ligge bag sine knapper.

Men god fornøjelse! Og kom endelig med spørgsmål hvis der er noget du er i tvivl om.

DMK
Avatar billede s Nybegynder
23. december 1999 - 13:54 #16
heh...
Indtil videre har jeg heller ikke forsøgt mig med forms osv. men kun med den dos-compiler der følger med... :-)

Kan i evt. ikke lige kigge her?
http://www.eksperten.dk/spm.asp?id=8876
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester