Avatar billede baxos Nybegynder
01. november 2007 - 16:58 Der er 19 kommentarer og
1 løsning

Forklaring af includes

Hej eksperter!
Nu har jeg programmeret i C# i noget tid og også lidt c++ i C# når jeg lavede lidt større projekter brugte jeg flere classes for at det skulle være lidt mere overskueligt og det vil jeg også gerne gøre i c++ nu.. Men hvordan gør jeg det?
Og hvordan skal det compileres evt gerne med make
Avatar billede arne_v Ekspert
01. november 2007 - 17:09 #1
Du putter 5 klasser i a.h og a.cpp, 7 klasser i b.h og b.cpp.

x.cpp includer baade a.h og b.h.

der compilees:

a.cpp -> a.obj
b.cpp -> b.obj
x.cpp -> x.obj

der linkes:

x.obj + a.obj + b.obj -> x.exe

Det kan meget nemt laves med make.
Avatar billede baxos Nybegynder
01. november 2007 - 18:13 #2
Ehm kan du forklare det lidt nærmere ?
Give et eksemple på hvordan includesne skal se ud og hvordan man evt vil lave make filen? .. Skal siges jeg bruger Linux
Avatar billede arne_v Ekspert
01. november 2007 - 18:19 #3
Brug #include <> til standard header filerne og #include "" til dine egne.

Bare:

#include "a.h"
#include "b.h"
Avatar billede arne_v Ekspert
01. november 2007 - 18:22 #4
a.o : a.cpp a.h
    g++ -c a.cpp -o a.o

b.o : b.cpp b.h
    g++ -c b.cpp -o b.o

x.o : x.cpp a.h b.h
    g++ -c x.cpp -o x.o

x : x.o a.o b.o
    g++ x.o a.o b.o -o x
Avatar billede baxos Nybegynder
01. november 2007 - 19:47 #5
Forstår nu nogenlunde godt at include dem men nu ikke hvordan filer skal se ud
Avatar billede arne_v Ekspert
01. november 2007 - 19:59 #6
Du putter interface i .h og implementation i .cpp !
Avatar billede baxos Nybegynder
01. november 2007 - 20:04 #7
Ahha! Kan du ikke give et eksemple på en meget simpel?
Avatar billede arne_v Ekspert
01. november 2007 - 20:17 #8
.h

class C
{
    public:
        void SayHello();
};

.cpp

#include <iostream>

using namespace std;

void C::SayHello()
{
  cout << "Hello" << endl;
}
Avatar billede baxos Nybegynder
01. november 2007 - 21:11 #9
der includer du jo ikke noget?
Avatar billede arne_v Ekspert
01. november 2007 - 21:15 #10
nej

det a.h og a.cpp

x.cpp har saa:

#include "a.h"

...

C *o = new C();
o->SayHello();
Avatar billede arne_v Ekspert
01. november 2007 - 21:16 #11
og a.cpp skal naturligvis ogsaa inkludere a.h
Avatar billede baxos Nybegynder
01. november 2007 - 21:16 #12
Ahh forstod lidt nu men hvordan kalder jeg så funktionen fra min main ? og gider du ikke at lave et make script?
Avatar billede baxos Nybegynder
01. november 2007 - 21:19 #13
Nu har jeg filerne
text.cpp
text.h

og main.cpp

Hvordan compilere jeg dem så
Avatar billede arne_v Ekspert
01. november 2007 - 21:23 #14
text=a
main=x

jeg lavede et make script 01/11-2007 18:22:31
Avatar billede baxos Nybegynder
02. november 2007 - 01:08 #15
text.o : text.cpp a.h
  g++ -c text.cpp -o text.o

main.o : main.cpp text.h
g++ -c main.cpp -o main.o

main : main.o text.o
g++ main.o test.o -o main

har dette kode nu og kaldt filen for make
men hvis jeg går ind i terminalen og går til mappen og skriver make siger den at filen ikke er der
Avatar billede baxos Nybegynder
02. november 2007 - 01:20 #16
Ahh det er super det der..! alt virker undtagen de der make scripts fatter virkelig keine af dem men hvis jeg bare compilere det manuelt virker det helt fint!
Avatar billede arne_v Ekspert
02. november 2007 - 02:05 #17
filen skal hedde makefile ikke make
Avatar billede baxos Nybegynder
05. november 2007 - 17:59 #19
Super gider du at smide et svar? :)
Avatar billede arne_v Ekspert
05. november 2007 - 18:11 #20
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester