N00b C vraag

Pagina: 1
Acties:
  • 48 views sinds 30-01-2008

  • HoroHoro
  • Registratie: Februari 2003
  • Laatst online: 28-09-2024
Ik ben bezig onder C een programmaatje te schrijven, en ik ben tegen het probleem aangelopen dat een typedef alleen maar geldig is voor de header file waarin die is gedefinieerd. Ik heb ook al geprobeerd om de typedef in de andere header file op te nemen, maar dan geeft de GCC compiler een 'redefine' foutmelding.

De code die hieronder staat (inhoud van 4 (!) files) heeft hetzelfde probleem als ik in mijn programma heb. Heeft iemand enig idee hoe ik dit kan oplossen? Liefst zonder nog meer files aan het programma toe te voegen. De foutmeldingen die de compiler gaf staan helemaal onder aan het programma.

Thx!

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// ### Header File of main.c ###

typedef unsigned short opt;

#define CLIENT_DC
#define SERV_DC 2
#define LOST_CON 4

void test(opt var1);

// ### Main C File ###

#include "main.h"

int main(void) {
  // Do something
  TestMe(LOST_CON);

  return 0;
}

void test(opt var1) {
  // Do something
  if (var1 == LOST_CON) {
    exit(0);
  } else {
    exit(1);
  }
}

// ### Include File of inc.c ###

void TestMe(opt var1);

// ### inc.c File ###

#include "inc.h"

void TestMe(opt var1) {
  // Do something
  test(var1);
}

###################

In file included from inc.c:3:
inc.h:3: parse error before "var1"
inc.c:5: parse error before "var1"
inc.c: In function `TestMe':
inc.c:7: `var1' undeclared (first use in this function)
inc.c:7: (Each undeclared identifier is reported only once
inc.c:7: for each function it appears in.)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Mja, pak een C boek enzo, dit soort dingen moet je echt zelf op kunnen lossen

In inc.c is opt uiteraard nog niet gedefinieerd. Dezelfde typedef neerzetten in inc.h als in main.h is geen goede oplossing. Maak gewoon 1 header aan met de type die je wilt delen, en die include je dan in beide source files

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Dit topic is gesloten.