bonjour,
Réalisant un exercice de thinking in C, j'ai eu une erreur que j'avais du mal à expliquer (je suis débutant).
J'ai recopié un exemple du même chapitre (le chapitre 6) mettant en oeuvre le même principe et j'ai eu la même erreur.
Je m'explique : il s'agit d'une classe qui fait appel à des fonctions correctement déclarées dans un header. Voyez ci-dessous.
Lorsque je crée le projet dans visual C++, j'obtiens à la compilation de tstack.c l'erreur
'STK_ERROR' : identificateur non déclaré
"Pourtant" tout me semble correctement déclaré, "par contre" je ne sais pas si c'est correct de faire du C dans un projet C++, dans visual C++, et si ça ne génère justement pas ce type d'erreur (appel de header différent, ...). Je ne suis pas encore au C++, et malgré mes recherches je n'arrive pas à avoir une réponse claire.
Pouvez vous m'éclairer (merci !).
le header
les fonctions
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 /* stack.h: Declarations for a stack of ints */ #define STK_ERROR -32767 void stk_push(int); int stk_pop(void); int stk_top(void); int stk_size(void); int stk_error(void);
la classe main
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 /* stack.c: implementation */ #include "stack.h" /* Private data: */ #define MAX 10 static int error = 0; /* error flag */ static int data[MAX]; /* the stack */ static int ptr; /* stack pointer */ /* Function implementation */ void stk_push(int x) { if (ptr < MAX) { data[ptr++] = x; error = 0; } else error = 1; } int stk_pop(void) { if (ptr > 0) { int x = data[--ptr]; error = 0; return x; } else { error = 1; return STK_ERROR; } } int stk_top(void) { if (ptr > 0) { error = 0; return data[ptr-1]; } else { error = 1; return STK_ERROR; } } int stk_size(void) { return ptr; } int stk_error(void) { return error; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 /* tstack.c: Tests the stack of ints */ #include "stack.h" #include <stdio.h> int main() { int i; /* Populate stack */ for (i = 0; i < 11; ++i) stk_push(i); if (stk_error()) puts("stack error"); printf("The last element pushed was %d\n", stk_top()); /* Pop/print stack */ while (stk_size() > 0) printf("%d ", stk_pop()); putchar('\n'); if (!stk_error()) puts("no stack error"); return 0; }
Partager