/ 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
funktioner...
Fra : holst


Dato : 02-05-02 19:51

Hej NG

Jeg er ikke helt sej til c, og kan simpelthen ikke se, hvad problemet er med
denne funktion def.:

void task1(mail_type *mail);

kompileren melder følgende fejl:

"type disagreement for 'task1'"

hvis det kan hjælpe er typedef af mail_type her:
typedef struct mail_type{
task_type sender;
task_type reciever;
unsigned char length;
boolean last;
unsigned char data;
}mail_type;

håber at nogen kan hjælpe....på forhånd tak

mvh holst



 
 
Martin Moller Peders~ (02-05-2002)
Kommentar
Fra : Martin Moller Peders~


Dato : 02-05-02 20:21

In <aas144$l46$1@sunsite.dk> "holst" <holst@nork.auc.dk> writes:

>Hej NG

>Jeg er ikke helt sej til c, og kan simpelthen ikke se, hvad problemet er med
>denne funktion def.:

>void task1(mail_type *mail);

>kompileren melder følgende fejl:

>"type disagreement for 'task1'"

Hvordan ser selve hovedet til implementationen af task1 funktionen ud ?

/Martin




holst (02-05-2002)
Kommentar
Fra : holst


Dato : 02-05-02 20:36


"Martin Moller Pedersen" <tusk@daimi.au.dk> wrote in message
news:aas3iq$107m$1@news.net.uni-c.dk...
> In <aas144$l46$1@sunsite.dk> "holst" <holst@nork.auc.dk> writes:
>
> Hvordan ser selve hovedet til implementationen af task1 funktionen ud ?

den ser således ud:

void task1(mail_type mail)
{
........bla
}

håber det kan hjælpe...



Kent Friis (02-05-2002)
Kommentar
Fra : Kent Friis


Dato : 02-05-02 20:30

Den Thu, 2 May 2002 21:36:29 +0200 skrev holst:
>
>"Martin Moller Pedersen" <tusk@daimi.au.dk> wrote in message
>news:aas3iq$107m$1@news.net.uni-c.dk...
>> In <aas144$l46$1@sunsite.dk> "holst" <holst@nork.auc.dk> writes:
>>
>> Hvordan ser selve hovedet til implementationen af task1 funktionen ud ?
>
>den ser således ud:
>
>void task1(mail_type mail)
>{
>.......bla
>}
>
>håber det kan hjælpe...
>
>

void task1(mail_type *mail)
void task1(mail_type mail)

Kan du selv se forskellen? Eller skal det skæres ud i pap...

Mvh
Kent
--
The revolution has just begun.

holst (02-05-2002)
Kommentar
Fra : holst


Dato : 02-05-02 21:02

"Kent Friis" <leeloo@phreaker.net> wrote in message
news:aas44j$3e7$1@sunsite.dk...
> void task1(mail_type *mail)
> void task1(mail_type mail)
>
> Kan du selv se forskellen? Eller skal det skæres ud i pap...
>

Hov glemte *, men den er altså i koden, så det er ikke derfor....så du må
gerne skære det ud i pap

mvh
holst



holst (02-05-2002)
Kommentar
Fra : holst


Dato : 02-05-02 20:44

har fundet ud af at hvis jeg bare kalder funktionen noget andet end task1 så
virker det. Feks, med taks11...mystisk. Kan det have noget med denne typedef
at gøre, som jeg også har lavet i samme fil??

typedef enum
{
task1,
task2
}task_type;

Håber nogen kan give mig svaret på denne (for mig) besynderlighed!


"holst" <holst@nork.auc.dk> wrote in message news:aas3q4$235$1@sunsite.dk...
>
> "Martin Moller Pedersen" <tusk@daimi.au.dk> wrote in message
> news:aas3iq$107m$1@news.net.uni-c.dk...
> > In <aas144$l46$1@sunsite.dk> "holst" <holst@nork.auc.dk> writes:
> >
> > Hvordan ser selve hovedet til implementationen af task1 funktionen ud ?
>
> den ser således ud:
>
> void task1(mail_type mail)
> {
> .......bla
> }
>
> håber det kan hjælpe...
>
>



Martin Moller Peders~ (02-05-2002)
Kommentar
Fra : Martin Moller Peders~


Dato : 02-05-02 21:05

In <aas47l$4ku$1@sunsite.dk> "holst" <holst@nork.auc.dk> writes:

>har fundet ud af at hvis jeg bare kalder funktionen noget andet end task1 så
>virker det. Feks, med taks11...mystisk. Kan det have noget med denne typedef
>at gøre, som jeg også har lavet i samme fil??

>typedef enum
>{
>task1,
>task2
>}task_type;

>Håber nogen kan give mig svaret på denne (for mig) besynderlighed!

Der er dumt og forkert at have en funktionen og en enum, der hedder det samme.

Omdoeb funktionen task1 eller lav enum'en om. F.x.
enum { task1T, task2T } task_type;

Mvh
Martin





Bjarne Laursen (02-05-2002)
Kommentar
Fra : Bjarne Laursen


Dato : 02-05-02 21:10

"holst" <holst@nork.auc.dk> wrote:

>typedef struct mail_type{
> task_type sender;
> task_type reciever;
> unsigned char length;
> boolean last;
> unsigned char data;
>}mail_type;
Jeg tror ikke du kan bruge den samme identifiere før og efter {}
Jeg mener du kan fjerne den første. Det kan man i hvert tilfælde i
c++, ellers skal den vel kaldes noget andet.

-Bjarne


Byrial Jensen (02-05-2002)
Kommentar
Fra : Byrial Jensen


Dato : 02-05-02 23:18

Bjarne Laursen <bl@pyramidedata.dk> skrev:
> "holst" <holst@nork.auc.dk> wrote:
>
>>typedef struct mail_type{
>> task_type sender;
>> task_type reciever;
>> unsigned char length;
>> boolean last;
>> unsigned char data;
>>}mail_type;
> Jeg tror ikke du kan bruge den samme identifiere før og efter {}

Det er ikke et problem for de 2 mail_type navne er i hvert sit
navnerum. C har adskilte navnerum for:
- Etiketter.
- Navne på struct'er, union'er og enum'er. Bemærk at de 3 typer
navne deler navnerum selvom syntaksen gør det nemt at skelne
mellem dem.
- Medlemmer af struct'er og union'er. Hvert struct og union udgør
sit eget navnerum for sine medlemmer.
- Alle andre navne: variabler, funktioner, enum-konstanter,
typedefinitioner. (Har jeg glemt noget?)

Det fremgår af tråden at problemet skyldtes en konflikt mellem en
enum-konstant og et funktionsnavn som altså er i samme navnerum.

Bertel Lund Hansen (02-05-2002)
Kommentar
Fra : Bertel Lund Hansen


Dato : 02-05-02 23:17

Bjarne Laursen skrev:

>>typedef struct mail_type{
>>...
>>}mail_type;
>Jeg tror ikke du kan bruge den samme identifiere før og efter {}

Jo, det kan man godt. Muligheden for at sætte navnet først er
nødvendigt ved en type der kalder sig selv.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Martin Dyring (02-05-2002)
Kommentar
Fra : Martin Dyring


Dato : 02-05-02 23:12

"holst" <holst@nork.auc.dk> wrote in message news:aas144$l46$1@sunsite.dk...
> Hej NG
>
> Jeg er ikke helt sej til c, og kan simpelthen ikke se, hvad problemet er
med
> denne funktion def.:
>
> void task1(mail_type *mail);
>
> kompileren melder følgende fejl:
>
> "type disagreement for 'task1'"
>
> hvis det kan hjælpe er typedef af mail_type her:
> typedef struct mail_type{
> task_type sender;
> task_type reciever;
> unsigned char length;
> boolean last;
> unsigned char data;
> }mail_type;

Prøv med:

typedef struct mail_type{
task_type sender,
task_type reciever,
unsigned char length,
boolean last,
unsigned char data,
};

Eller mere specifikt: lad være med at instantiere variablen "mail_type" af
typen struct mail_type.. Og lav de fleste ";" om til ",".

--
Mvh,
Martin Dyring




Byrial Jensen (02-05-2002)
Kommentar
Fra : Byrial Jensen


Dato : 02-05-02 23:42

Martin Dyring <mda@image.dk> skrev:
> Prøv med:
>
> typedef struct mail_type{
> task_type sender,
> task_type reciever,
> unsigned char length,
> boolean last,
> unsigned char data,
> };

Det er et usædvanligt dårligt råd som ikke virker.

> Eller mere specifikt: lad være med at instantiere variablen "mail_type" af
> typen struct mail_type..

Der er ingen variabel - det drejer sig om en typedefintion som nu
efter dit forslag ikke får noget navn. Det er vistnok formelt set
tilladt, men giver ingen mening.

> Og lav de fleste ";" om til ",".

Det giver bare syntaksfejl med kommaer.

Rent faktisk var der intet i vejen med den typedef som du foreslår
ændret.

Martin Dyring (05-05-2002)
Kommentar
Fra : Martin Dyring


Dato : 05-05-02 12:49

"Byrial Jensen" <bjensen@nospam.dk> wrote in message
news:slrnad3g8k.1io.bjensen@ask.ask...
> Martin Dyring <mda@image.dk> skrev:
> > Prøv med:
> >
> > typedef struct mail_type{
> > task_type sender,
> > task_type reciever,
> > unsigned char length,
> > boolean last,
> > unsigned char data,
> > };
>
> Det er et usædvanligt dårligt råd som ikke virker.

Ak, det er rigtigt. Tænkte ikke over typedef'en - men det er jo så ikke det
der har været problemet alligevel. :)

--
Mvh,
Martin Dyring




Thomas Lykkeberg (05-05-2002)
Kommentar
Fra : Thomas Lykkeberg


Dato : 05-05-02 15:24

On Thu, 2 May 2002 20:50:37 +0200, "holst" <holst@nork.auc.dk> wrote:

>Hej NG
>
>Jeg er ikke helt sej til c, og kan simpelthen ikke se, hvad problemet er med
>denne funktion def.:
>
>void task1(mail_type *mail);
>
>kompileren melder følgende fejl:
>
>"type disagreement for 'task1'"
>
>hvis det kan hjælpe er typedef af mail_type her:
>typedef struct mail_type{
> task_type sender;
> task_type reciever;
> unsigned char length;
> boolean last;
> unsigned char data;
>}mail_type;
>
>håber at nogen kan hjælpe....på forhånd tak
Du har ikke vist hvor du foretager prototypen af task1 funktionen. Gør
du det før eller efter typen "mail_type" bliver defineret.

ligeledes hvis task_type er en enum, som indeholder enumereringen
'task1', ja så går det galt.

Der er jo tale om en .C kompileret fil.

/Thomas

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

Månedens bedste
Årets bedste
Sidste års bedste