/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
adgang til samme struct i alle filer i mit~
Fra : Boon


Dato : 18-09-03 10:50

Hej

Hvordan få jeg adgang til dataen i en struct i en fil, der er lavet i en
anden fil(samme projekt)?
Der var en der sagde at jeg bare skulle smide den (structen) i en header
fil, også lave en #include til denne i begge filer. men så opretter jeg
åbenbart bare en struct i hver fil der ikke har noget at gøre med hinanden
!?!

hvordan kommer jeg ud over det problem??

mvh
Henrik



 
 
Bertel Brander (18-09-2003)
Kommentar
Fra : Bertel Brander


Dato : 18-09-03 17:03

Boon wrote:
> Hej
>
> Hvordan få jeg adgang til dataen i en struct i en fil, der er lavet i en
> anden fil(samme projekt)?
> Der var en der sagde at jeg bare skulle smide den (structen) i en header
> fil, også lave en #include til denne i begge filer. men så opretter jeg
> åbenbart bare en struct i hver fil der ikke har noget at gøre med hinanden
> !?!
>
> hvordan kommer jeg ud over det problem??

I header filen laver du typen på strukturen, f.ex:

typedef struct
{
int a;
}Whatever;

og en extern erklæring af din struct, f.ex:

extern Whatever MyWhatever;

I en af C/C++ filerne laver du selve struct'en, f.ex:

Whatever MyWhatever;

/b


Jesper Matthiesen (19-09-2003)
Kommentar
Fra : Jesper Matthiesen


Dato : 19-09-03 07:02

Hej - er der så en god forklaring på hvad 'extern' præcis betyder?
-J


"Bertel Brander" <bertel@post4.tele.dk> wrote in message
news:3f69d6d1$0$13187$edfadb0f@dread15.news.tele.dk...
> Boon wrote:
> > Hej
> >
> > Hvordan få jeg adgang til dataen i en struct i en fil, der er lavet i en
> > anden fil(samme projekt)?
> > Der var en der sagde at jeg bare skulle smide den (structen) i en header
> > fil, også lave en #include til denne i begge filer. men så opretter jeg
> > åbenbart bare en struct i hver fil der ikke har noget at gøre med
hinanden
> > !?!
> >
> > hvordan kommer jeg ud over det problem??
>
> I header filen laver du typen på strukturen, f.ex:
>
> typedef struct
> {
> int a;
> }Whatever;
>
> og en extern erklæring af din struct, f.ex:
>
> extern Whatever MyWhatever;
>
> I en af C/C++ filerne laver du selve struct'en, f.ex:
>
> Whatever MyWhatever;
>
> /b
>



Troels Thomsen (19-09-2003)
Kommentar
Fra : Troels Thomsen


Dato : 19-09-03 07:50


> Hej - er der så en god forklaring på hvad 'extern' præcis betyder?
> -J
>

Prøv i en c fil at skrive asdf = 5, det kan ikke compilere. Skriv så extern
int asdf, nu kan denne fil compilere, men projektet kan ikke linke. Min
compiler skriver noget i retning af "unresolved external".

Altså ; Du "lover" compileren at denne variabel (som ikke findes i den
pågældende c/cpp fil) vil "dukke op" på linkning-tidspunktet.

mvh Troels



Boon (19-09-2003)
Kommentar
Fra : Boon


Dato : 19-09-03 22:25

Jeg takker mange gange.. det var lige hvad jeg havde brug for, og det virker
fint. Men er der andre måder hvorpå det måske kan gøres smartere. der er
ikke et must at det skal være en struct jeg skal bruge. det var bare det jeg
forestillede mig. Den skal bare indeholde int, char og måske bool typer.



"Bertel Brander" <bertel@post4.tele.dk> wrote in message
news:3f69d6d1$0$13187$edfadb0f@dread15.news.tele.dk...
> Boon wrote:
> > Hej
> >
> > Hvordan få jeg adgang til dataen i en struct i en fil, der er lavet i en
> > anden fil(samme projekt)?
> > Der var en der sagde at jeg bare skulle smide den (structen) i en header
> > fil, også lave en #include til denne i begge filer. men så opretter jeg
> > åbenbart bare en struct i hver fil der ikke har noget at gøre med
hinanden
> > !?!
> >
> > hvordan kommer jeg ud over det problem??
>
> I header filen laver du typen på strukturen, f.ex:
>
> typedef struct
> {
> int a;
> }Whatever;
>
> og en extern erklæring af din struct, f.ex:
>
> extern Whatever MyWhatever;
>
> I en af C/C++ filerne laver du selve struct'en, f.ex:
>
> Whatever MyWhatever;
>
> /b
>



Bertel Brander (19-09-2003)
Kommentar
Fra : Bertel Brander


Dato : 19-09-03 23:25

Boon wrote:
> Jeg takker mange gange.. det var lige hvad jeg havde brug for, og det virker
> fint. Men er der andre måder hvorpå det måske kan gøres smartere. der er
> ikke et must at det skal være en struct jeg skal bruge. det var bare det jeg
> forestillede mig. Den skal bare indeholde int, char og måske bool typer.
>
Jeg er ikke sikker på at jeg forstår spørgsmålet.
Du kan lave det samme med int, char, bool, osv. Så skriver du i
header filen:

extern int MyInt;

og i en af c/c++ filerne:

int MyInt;

I c++ kan du også bruge class.

/b

PS: Nogen laver en header fil der ser ud som følger:

#ifndef EXTERN
#define EXTERN extern
#endif

EXTERN int MyInt;

Og i en af c/c++ filene skriver man så:

#define EXTERN
#include "myheader.h"

I de andre c/c++ filer inkluderer man blot "myheader.h".

Der er nogen der synes at det er smartere. Hvis du ikke
forstår hvad der foregår, vil jeg anbefale dig at holde
dig fra metoden.


Boon (20-09-2003)
Kommentar
Fra : Boon


Dato : 20-09-03 15:22

Hej
Jeg forstår udmærket dit svar og det virker også fint hos mig. Det jeg
tænkte på var om der var andre måde hvorpå man kan lave noget ala struct..
jeg tænker her på er arrays, union og hvad de nu hedder. jeg har ikke så
meget erfaring med disse. men det kun jo være at det er nogle af dem der er
bedre som globale datatypes.

mvh
Henrik


> Der er nogen der synes at det er smartere. Hvis du ikke
> forstår hvad der foregår, vil jeg anbefale dig at holde
> dig fra metoden.




Bertel Brander (20-09-2003)
Kommentar
Fra : Bertel Brander


Dato : 20-09-03 19:21

Boon wrote:
> Hej
> Jeg forstår udmærket dit svar og det virker også fint hos mig. Det jeg
> tænkte på var om der var andre måde hvorpå man kan lave noget ala struct..
> jeg tænker her på er arrays, union og hvad de nu hedder. jeg har ikke så
> meget erfaring med disse. men det kun jo være at det er nogle af dem der er
> bedre som globale datatypes.
>
Hvis man har brug for et array laver man et array, har man brug for
en int laver man en int, har man brug for en union tænker man sig lige
om igen og laver en union, har man brug for en struct laver man en
struct, har man brug for ...

Der er ikke nogen datatyper der er bedre end andre som globale data
typer.

Hvis man programerer i C++ kan man bruge class, og pakke variablen
ind, man starter med header-filen:

class MyIntClass
{
public:
MyIntClass(int i) : MyInt(i) {}
int Get() {return MyInt;}
void Set(int i) {MyInt = i;}
private:
int MyInt;
};

Extern MyIntClass MyInt;

Og i en af C++ filerne

MyIntClass MyInt(0);

Man kan så bruge MyInt på følgende måde:

int n = MyInt.Get();
n++;
MyInt.Set(i);

Der er nogen der synes at det er "pænere".

/b


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste