Hur skapar man Moduler, funktionsbibliotek i dev-C++ ?

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Johan.o
EF Sponsor
Inlägg: 2386
Blev medlem: 18 juni 2003, 01:08:50
Ort: Jönköping

Hur skapar man Moduler, funktionsbibliotek i dev-C++ ?

Inlägg av Johan.o »

Hej

jag använder dev-C++ för att skriva program i C. för windowsmiljö (XP).
Det jag undrar är hur man gör för att dela upp program, tror det kallas moduler..
Där man har ett huvudprogram, en fil med funktioner och en deklerationsfil.
Just i " dev-C++ " ?
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Hur menar du? Dev-C++ är ju ett IDE, och har ju inget alls med koden att göra.
Med GCC gör man "som vanligt" och delar upp det i C-filer.
Är det något fatalt jag inte förstått?

Mvh
speakman
Johan.o
EF Sponsor
Inlägg: 2386
Blev medlem: 18 juni 2003, 01:08:50
Ort: Jönköping

Inlägg av Johan.o »

Den får ju tokfnatt när jag försöker kompilera skiten.
Det måste ju vara på något sätt att man måste berätta att
man delat upp programmet.. och hänvisa alla filer som ingår i programmet.
Vet att i den kompilator som läraren använder i skolan måste
han skicka in exempelvis:

huvudprogrammet (*.c)
funtktionsdefinationer (*.c)
deklerationsfil (*.h)

som argument i kompilatorn..
Saken är att jag önskar göra likadant, ha alla funktioner som skrivs för programmet i separat fil.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Okej, du menar att IDE:t inte länkar ihop projektets source-filer korrekt?
Prova gör en egen Makefile i värsta fall.
Har själv aldrig kört Dev-C++, men ska prova det framöver (slipper VS!). Återkommer om jag hittar någon lösning. :)

Mvh
speakman
Johan.o
EF Sponsor
Inlägg: 2386
Blev medlem: 18 juni 2003, 01:08:50
Ort: Jönköping

Inlägg av Johan.o »

Det gör jag nog ja.
Makefil?
Måste påpeka att du snackar med en total nybörjare på C.. :)
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Aha! :)

Men om vi tar det så här då;
C-kompilering är uppbyggt av två "faser"; kompilering och länkning.
Först kompileras varje enskild C-fil (helt oberoende av andra C-filer) till objekt-filer.
När alla C-filer är objekt-filer, länkas dessa ihop till den slutliga exekverbara filen.

Om man använder en "integrerad utvecklingsmiljö", IDE, så är det primärt dennes uppgift att skicka nödvändiga "parametrar" till kompilatorn/länkaren.
Däri ingår att hålla reda på vilka C-filer som projektet innehåller.
Observera att H-filer endast är till för C-filerna, och har egentligen inget med kompilatorn i sig att göra (de #include:eras ju i respektiva C-fil).

Det finns ju ett otal sätt att använda sig av C- och H-filer, men den vanligaste, och den jag använder, är att jag låter varje C-fil bestå av en grupp funktioner som helst är skrivna så oberoende som möjligt av andra C-filer.
Sedan deklarerar jag funktionerna i en H-fil med samma namn som C-filen.
Om jag sedan i en C-fil behöver funktioner ur en annan C-fil, så #include:erar jag den H-fil som deklarerar de funktioner jag ämnas använda.

Detta är förmodligen precis vad din lärare också förklarat.

Men det är nu det är upp till IDE't (eller en Makefile) att "sammanföra" detta till en slutlig exekverbar fil.
Och använder man ett IDE, så ska allt detta skötas automatiskt. Genom att lägga till en C-fil i IDE'ts projekthanterare, så ska den också vara en del av programmet, alltså länkas in i den slutliga exekverbara filen.
Det låter konstigt om inte Dev-C++ klarar denna grundläggande uppgift.

Om man väljer att inte använda ett IDE (vanligt i UNIX-världen), så redigerar man istället filerna löst i valfritt editeringsprogram.
Och sedan för att enkelt utföra kompilering och länkning, använder man make.
När du kör make så letar den i aktuell katalog efter "Makefile".
I Makefile finns deklarerat precis vilka C-filer som ska ingå i länkningen, och även andra parametrar som ska skickas till kompilatorn eller länkaren.
make startar sedan kompilatorn (som också anges i Makefile:en) och betar av C-fil efter C-fil, och slutligen länkar ihop objektfilerna.

Vad jag ser i Dev-C++ så kan man ange sin egna Makefile, och utgår då ifrån den istället för den inbyggda projekthanteraren.

Mer om hur du gör en Makefile här.

Mvh
speakman
Johan.o
EF Sponsor
Inlägg: 2386
Blev medlem: 18 juni 2003, 01:08:50
Ort: Jönköping

Inlägg av Johan.o »

Tack för ditt svar speakman, jag kanske återkommer med lite fler frågor senare. Då det inte är förräns sista laborationen jag ska kunna dethär, sista inlämningsdag någon gång efter tentan.. så det
blir öva på andra saker inför tentan istället :roll:
Skriv svar