webForumDet fria alternativet

.h och .cpp

C/C++

5 svar · 553 visningar · startad av N-Foe

Medlem sedan juni 200384 inlägg
Frågan#1

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?

Medlem sedan juni 200010 432 inlägg
#2

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.

Medlem sedan maj 20002 993 inlägg
#3

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

Medlem sedan juni 20008 205 inlägg
#4

Det är cpp-filen som kompileras. När du säger #include "fubar" ersätter preprocessorn det med innehållet i filen fubar.h.

Medlem sedan maj 20002 993 inlägg
#5

Ja men om jag har flera olika cpp/h filer?

Medlem sedan juni 200010 432 inlägg
#6

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.

652 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
519 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)