einer is hier dumm: ich/gcc/editor
-
struct Node { int value; }; struct Node *queue_start = NULL; ... int remove_element() { if (queue_start == NULL) return -1; .... }
laut gcc parse error beim if-statement. kommentier ichs raus, gehts. hab ich bei ansi-c irgenwas verpasst hinsichtlich if-bedinungen?
-
NULL ist AFAIK in Ansi C nicht definiert.
Erst in C++.Also schreib : #define NULL 0
-
das null kann eigentlich nicht das problem sein, da ich es ca 20x vor der fehlerzeile hernehm und solche identifier fehler normalerweise beim ersten auftreten vorkommen. ausserdem hab ich auch schon mal die bedingung auf 1 gesetzt, um zu sehn, obs am vergleich liegt, aber nix da
ausserdem frists der gcc mit -pedantic und -ansi
-
SeppSchrot schrieb:
NULL ist AFAIK in Ansi C nicht definiert.
Bloedsinn.
-
so, ich raffs echt nicht. ich post mal eben doch den ganzen code, dass das mal jemand durch seinen compiler jagen kann, obs vlt an meim gcc liegt?
#include <stdio.h> #include <stdlib.h> struct Node { struct Node *next; unsigned int value; }; static struct Node *queue_start = NULL; static struct Node *queue_ende = NULL; void append_element(int val) { struct Node *neu = (struct Node *)malloc(sizeof(struct Node)); neu->value = (unsigned int) val; neu->next = NULL; if(queue_start == NULL) { queue_start = neu; queue_ende = neu; } else { queue_ende->next = neu; queue_ende = neu; } } int remove_element() { if (queue_start == NULL) return -1; unsigned int retval = queue_start->value; struct Node *temp = queue_start->next; free(queue_start); queue_start = temp; if (queue_start == NULL) queue_ende = NULL; return (int) retval; } int main(int argc, char **argv) { append_element(47); append_element(11); append_element(42); printf("remove: %d\n", remove_element()); printf("remove: %d\n", remove_element()); printf("remove: %d\n", remove_element()); printf("remove: %d\n", remove_element()); append_element(42); printf("remove: %d\n", remove_element()); while (queue_start != NULL) remove_element(); return 0; }
-
Es ist legales C99, der Comeau bestaetigt meine Meinung.
Scheint n Problem mit dem gcc zu sein - ich bin leider am falschen PC, kann es deshalb nicht testen.
-
Shade Of Mine schrieb:
Es ist legales C99, der Comeau bestaetigt meine Meinung.
jo das dacht ich auch
wär nett wennst es in den naechsten tagen mal überprüfen könntest, ich werds hier auch probiern (wenn ich mal n linux drauf hab
-
Hallo,
bei mir kompiliert es anstandslos. gcc version 3.3.3
mfg
v R
-
g++ 3.4.0 und 3.3.2 schlucken code anstandslos
-
2.95.3 mekert rum..
-junix
-
junix schrieb:
2.95.3 mekert rum.
wegen den C99 features? (variablen nicht nur am blockanfang definieren)
-
ja genau das wars