21. december 1999 - 11:42Der 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'
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 }
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).
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...
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() ?
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?
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.
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.
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.
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.