Avatar billede zulaff Nybegynder
22. februar 2006 - 17:59 Der er 7 kommentarer og
1 løsning

C kompiling

Jeg er ny til at kode i C, og kan ikke compile min kode. Jeg får følgene fejlmeddelelse:

> gcc -pthread quicksort.c
quicksort.c: In function `pushQueue':
quicksort.c:27: error: invalid type argument of `->'
quicksort.c:28: warning: assignment from incompatible pointer type
quicksort.c:29: error: invalid type argument of `->'
quicksort.c: At top level:
quicksort.c:21: error: storage size of `jobQueue' isn't known

Min kode ser således ud:

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>

typedef struct _sortingthread_t {
  int left;
  int right;
} sortingthread_t;

typedef struct _queueElement_t {
    struct _queueElement_t* forward;
    struct _queueElement_t* backward;
    struct sortingthread_t* data;
} queueElement_t;

typedef struct _queue_t {
  struct queueElement_t* first;
  struct queueElement_t* last;
} queue_t;

struct queue_t jobQueue;

void pushQueue(sortingthread_t *data) {
  queueElement_t *new;
  new = malloc(sizeof(queueElement_t));
 
  if(jobQueue->first == NULL) {
    new->data=data;
    jobQueue->first = *new;
  }
}
+mere kode, jeg dog ikke tror har noget med fejlen at gøre, da det er kompilet korrekt tidligere (spørg endelig hvis i vil se det). Kan nogen hjælpe?
Meningen med koden, er at lave en kø(queue_t), der indeholder forrste, og bagerste kø-elementer (queueElement_t). Hvert kø element indeholder en pointer til de kø-elementerne foran, og bag den.
Avatar billede zulaff Nybegynder
22. februar 2006 - 18:00 #1
Skulle nogen være i tvivl, bruges -pthread option, da der længere nede i koden bruges pthreads.
Avatar billede arne_v Ekspert
22. februar 2006 - 18:08 #2
efter

typedef struct _queue_t {
  struct queueElement_t* first;
  struct queueElement_t* last;
} queue_t;

er

struct _queue_t jobQueue;

og

queue_t jobQueue;

ok, men ikke

struct queue_t jobQueue;
Avatar billede zulaff Nybegynder
22. februar 2006 - 18:22 #3
har nu erstattet
struct queue_t jobQueue;

med
queue_t jobQueue;

får nu fejlmeddelelsen:
> gcc -pthread quicksort.c
quicksort.c: In function `pushQueue':
quicksort.c:27: error: invalid type argument of `->'
quicksort.c:28: warning: assignment from incompatible pointer type
quicksort.c:29: error: invalid type argument of `->'
Avatar billede arne_v Ekspert
22. februar 2006 - 18:45 #4
jobQueue->first

maa skulle vaere

jobQueue.first

naar det ikke er en pointer
Avatar billede zulaff Nybegynder
22. februar 2006 - 20:29 #5
Tak. Nu er der kun dette tilbage.

gcc -pthread quicksort.c
quicksort.c: In function `pushQueue':
quicksort.c:28: warning: assignment from incompatible pointer type
quicksort.c:29: error: incompatible types in assignment
Avatar billede arne_v Ekspert
22. februar 2006 - 20:39 #6
jobQueue->first = *new;

skal nok vaere

jobQueue->first = new;
Avatar billede zulaff Nybegynder
23. februar 2006 - 11:59 #7
Tak for hjælpen arne_v. Fandt de sidste fejl selv. Læg et svar ud, så jeg kan give dig point.
Avatar billede arne_v Ekspert
23. februar 2006 - 14:55 #8
ok
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