C++ - Det här med deklaration och definition? + Bättre alternativ än Anjuta?

Här diskuteras programmering och utveckling
Användarvisningsbild
lassekongo83
Inlägg: 77
Blev medlem: 20 mar 2007, 14:01
OS: Annat GNU/Linux
Utgåva: 23.04 Lunar Lobster
Ort: Göteborg

C++ - Det här med deklaration och definition? + Bättre alternativ än Anjuta?

Inlägg 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). ;D 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?
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

SV: C++ - Det här med deklaration och definition? + Bättre alternativ än Anjuta?

Inlägg 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++.
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

SV: C++ - Det här med deklaration och definition? + Bättre alternativ än Anjuta?

Inlägg 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.
KDE 4.5 SC är ute i det fria!!! Tjoho

Stagnation is good for nobody - after all if you don't progress you end up with gnome
Användarvisningsbild
lassekongo83
Inlägg: 77
Blev medlem: 20 mar 2007, 14:01
OS: Annat GNU/Linux
Utgåva: 23.04 Lunar Lobster
Ort: Göteborg

SV: C++ - Det här med deklaration och definition? + Bättre alternativ än Anjuta?

Inlägg 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. :)
Användarvisningsbild
DrMegahertz
Inlägg: 296
Blev medlem: 06 maj 2006, 14:37
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS
Ort: Södra Dalarna

SV: C++ - Det här med deklaration och definition? + Bättre alternativ än Anjuta?

Inlägg 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.
BildAre you shpongled? Bild
Användarvisningsbild
Smygis
Inlägg: 849
Blev medlem: 21 jun 2006, 18:41
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Kramfors

SV: C++ - Det här med deklaration och definition? + Bättre alternativ än Anjuta?

Inlägg 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++.
A Foolish Consistency is the Hobgoblin of Little Minds.Beware: In C++, your friends can see your privates!
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

SV: C++ - Det här med deklaration och definition? + Bättre alternativ än Anjuta?

Inlägg 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.
KDE 4.5 SC är ute i det fria!!! Tjoho

Stagnation is good for nobody - after all if you don't progress you end up with gnome
Skriv svar

Återgå till "Programmering och webbdesign"