Ik heb in een c programmatje en boom gemaakt die bestaat uit een aantal verschillende elementen. In een element kan een link worden gemaakt naar een niveau dieper. De elementen zijn opgeslagen in een struct.
De print functie:
Maar bij het compileren krijg ik dit:
De foutmeldingen komen vaker voor maar voor dit voorbeeld neem ik alleen het alternatief. Mijn vragen:
1) waarom een fout in regel 13? ALT_ALT_EXPR is gedefineerd als "const int ALT_ALT_EXPR = 0;"
2) hoe kom in aan een incompatible pointer type, hoe anders is *alternatief dan ALT_LINK?
Chris
(alt_alt_link was typo -> alt_alt_expr)
code:
1
2
3
4
5
6
7
8
9
| typedef struct
{
int type;
struct alternatief *alt;
char pipe;
EXPR_LINK expr;
} alternatief;
typedef alternatief *ALT_LINK; |
De print functie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| 09 void printAlt(ALT_LINK alternatief)
10 {
11 switch( alternatief->type )
12 {
13 case ALT_ALT_EXPR:
14 printAlt( alternatief->alt );
15 printf("%s", alternatief->pipe );
16 printExpr( alternatief->expr);
17 break;
18
19 case ALT_EXPR:
20 printExpr( alternatief->expr );
21 break;
22 }
23 } |
Maar bij het compileren krijg ik dit:
code:
1
2
3
4
5
6
7
| # gcc -c print.c print.c: In function `printAlt': print.c:13: case label does not reduce to an integer constant print.c:14: warning: passing arg 1 of `printAlt' from incompatible pointer type print.c:19: case label does not reduce to an integer constant print.c:14: warning: unreachable code at beginning of switch statement |
De foutmeldingen komen vaker voor maar voor dit voorbeeld neem ik alleen het alternatief. Mijn vragen:
1) waarom een fout in regel 13? ALT_ALT_EXPR is gedefineerd als "const int ALT_ALT_EXPR = 0;"
2) hoe kom in aan een incompatible pointer type, hoe anders is *alternatief dan ALT_LINK?
Chris
(alt_alt_link was typo -> alt_alt_expr)
www.fendt.com | Nikon D7100 | PS5