N-FoeMedlem sedan juni 200384 inlägg
Tjena! Jag är nybörjare på c++ och jag undrar vad som ska finnas i .h -filen och .cpp -filen? Och vad är resonemanget bakom? I java behöver man ju inte dela upp koden.
Har tittat på lite skriven c++ kod och ibland har de andra extensions som tex .hpp och .dsp och .rc
vad är det för filer?
PeWMedlem sedan juni 20006 839 inlägg
Den s.k headerfilen (.h) är rena deklarationer som kompilatorn klistrar in i början av filen som inkluderar h-filen. Det som står i h-filen blir då globalt. Cpp-filen ska innehålla definitionerna till klassernas funktioner. Rc-filen är en resursfil som kan exempelvis innehålla ikoner, knappar m.m. Dsp är projektfil med konfigurationen för just det projektet (miljön) och har inget med språket C++ att göra (så även RC-filen).
Nej man behöver egentligen inte dela upp i flera filer vare sig i C++ eller Java. Men ponera att man har några tusen rader kod och allt detta låg i en och samma fil? Dels är det svårt att få en bra struktur och dels är det hopplöst att återanvända någon kod till andra projekt. När man startar ett hello-world projekt i exempelvis Visual Studio får man automagiskt en massa filer. Men det betyder inte att det måste vara en massa filer utan dessa läggs upp enligt den sedvanliga konventionen. Samma sak sker i en del Java IDE'er om man väljer ett sådant projekt.
Alpha IIMedlem sedan maj 20002 579 inlägg
Jag har inte förstått hur ett c++ program kompileras. Vilken fil tex blir kompilerad först? Om man har olika klasser uppdelade i olika cpp/h filer och själva programmet i main.cpp/.h hur kommer då klasserna åt variblerna? Har haft samma problem hur länge som helst, men har inte riktigt orkat göra något i c++ :OO Får massa fel i länkningen. Massa unresolved externals. Använde tom en färdig kod för en sak och försökte använda den från mitt program... funkade kanske inte så lysande :l
spangoMedlem sedan juni 20006 147 inlägg
Det är cpp-filen som kompileras. När du säger #include "fubar" ersätter preprocessorn det med innehållet i filen fubar.h.
Alpha IIMedlem sedan maj 20002 579 inlägg
Ja men om jag har flera olika cpp/h filer?
PeWMedlem sedan juni 20006 839 inlägg
Alpha:
Eftersom du antagligen arbetar i ett IDE med färdiga projektkonfigurationer så ser du inte att det i bakgrunden är kopilatordirektiven som styr hur länkaren petar ihop allt i projektet till en enda körbar fil. Jobbar du i kommandoläge får du ange själv och skriver du en makefil får du ange vad som ska inkluderas i makefilen så att kompilatorn gör som du vill.
Om du har flera h-filer så klistras det som står i h-filerna in först i receptet, men det är parametrarna till kompilatorn som avgör vilka cpp-filer som ska bakas in i kakan. I Borland C++ och VisualC++ sker detta i bakgrunden och man behöver inte fundera så mycket på det.