Sida 1 av 1
C++ - Det här med deklaration och definition? + Bättre alternativ än Anjuta?
Postat: 06 apr 2007, 07:56
av lassekongo83
Om lite mer än en vecka så ska jag börja läsa Programmering A - C++. Men jag fick redan boken för ett par veckor sen och har läst till kapitel 5 nästan. Har också följt exempel online och lärt mig lite överkurs grejer plus gjort de mesta uppgifterna som jag ska få. (En fördel med att läsa på distans är att man kan logga in betydligt tidigare än vanligt och förbereda sig).

Men det finns ju dock lite saker som jag tycker är ordbajs i boken som jag gärna vill veta lite mer om.
Det här med Deklaration och Definition av variabler? Hur kan man förklara detta så enkelt som möjligt? Jag förstår inte riktigt vad som är skillnaden. Boken har inget bra exempel och skriver bara ut en stor mängd ordbajs. Kortfattat i kod, hur kan det se ut?
Om jag förstått det rätt... Vilket jag inte tror.
Kod: Markera allt
// Är detta deklaration av en variabel?
int variabel;
// Är detta en definition av variebeln?
variabel = 2;
Annars vet jag att funktioner brukar se ut så här.
Kod: Markera allt
void funktion(); // Deklaration eller hur?
void funktion() // Definition när det är med en massa kod inuti?
{
cout << "Ohoj Kapten.";
}
Sen så undrar jag också om det finns nåt bättre än Anjuta till Ubuntu? Anjuta är ju ostabilt som rinnande margarin. Kraschar hela tiden. Nåt alternativ som liknar Bloodshed Dev-C++ kanske?
SV: C++ - Det här med deklaration och definition? + Bättre alternativ än Anjuta?
Postat: 06 apr 2007, 09:53
av Lars
Oftast så sker definitionen och deklarationen av en variabel på samma ställe, det är fallet i dina exempel. Om man däremot vill använda en variabel i flera filer så definierar man den först i en fil, och sedan lägger man till en deklaration i alla andra filer som använder variabeln.
Ex: I filen boat.c finns raden "int nboats;", det är både en definition och deklaration. Om du vill använda den variabeln i någon annan fil så lägger du till "extern int nboats;" för att deklarera variabeln i den filen.
När man har "int nboats;" och "extern int nboats;" i flera olika filer så blir det svårt att hålla de uppdaterade om man t.ex. vill ändra till long. På grund av detta så är det snyggast att skapa en boat.h där man lägger till "extern int nboats;", sedan inkluderar man boat.h i alla filer som använder variabeln, även i boat.c.
Sedan är det oftast dumt att använda globala variabler, men det är en annan historia.
P.S. Jag märkte att jag snackar om C här, men samma sak gäller C++.
SV: C++ - Det här med deklaration och definition? + Bättre alternativ än Anjuta?
Postat: 06 apr 2007, 09:55
av mcNisse
Kod: Markera allt
//declaration
extern int variabel;
//definition
int variabel;
En deklaration talar om att variablen finns och vilken typ den har. Definitioner däremot ser till att plats allokeras. Får bara förekomma en gång.
Om jag förstått det rätt... Vilket jag inte tror.
Kodstycke:
// Är detta deklaration av en variabel?
int variabel;
// Är detta en definition av variebeln?
variabel = 2;
Du har missupfattat. Det första är definiton och det andra en tilldelning.
Har du provat emacs? Du kan titta i denna
lathund för att komma igång.
SV: C++ - Det här med deklaration och definition? + Bättre alternativ än Anjuta?
Postat: 06 apr 2007, 11:21
av lassekongo83
Ok, tack så mycket. Jag börjar förstå lite bättre nu.
Hur lätt är det att kompilera mina program i Emacs? Jag vill att det ska gå så snabbt som möjligt. I Dev-c++ är det ju bara att trycka F9 - Kompilera och kör.

SV: C++ - Det här med deklaration och definition? + Bättre alternativ än Anjuta?
Postat: 06 apr 2007, 12:35
av DrMegahertz
Jag brukar köra med en separat terminal för att kompilera min kod, men vill du kompilera från Emacs så går det aldeles utmärkt; klicka bara på Tools -> Compile... Och sedan sätter du det kommando du vill använda för att kompilera med, t.ex. 'g++ main.cpp -o main', eller så trycker du Alt+x och skriver in 'compile' och trycker enter så kommer du till samma promt.
Om du jobbar på projekt med fler filer så är det en fördel att skriva sig en makefile, så behöver du bara ange kommandot 'make' varje gång du vill bygga ditt projekt. Dessutom känner make av vilka filer som behöver kompileras om och inte, vilket gör att kompileringsprocessen går mycket fortare.
SV: C++ - Det här med deklaration och definition? + Bättre alternativ än Anjuta?
Postat: 06 apr 2007, 14:28
av Smygis
lassekongo83 skrev:
Sen så undrar jag också om det finns nåt bättre än Anjuta till Ubuntu? Anjuta är ju ostabilt som rinnande margarin. Kraschar hela tiden. Nåt alternativ som liknar Bloodshed Dev-C++ kanske?
http://www.codeblocks.org/
och
http://geany.uvena.de/
är två trevliga alternativ, Men tyvär kommer dom inte i närheten av att vara lika dåliga som Dev-C++.
SV: C++ - Det här med deklaration och definition? + Bättre alternativ än Anjuta?
Postat: 06 apr 2007, 15:18
av mcNisse
lassekongo83 skrev:
Ok, tack så mycket. Jag börjar förstå lite bättre nu.
Hur lätt är det att kompilera mina program i Emacs? Jag vill att det ska gå så snabbt som möjligt. I Dev-c++ är det ju bara att trycka F9 - Kompilera och kör.
Emacs går att konfigurera hur mycket sam helst... Självklart gär det att binda F9 till bygg kommandot.