From 213cfafe2e481d5296e4c6398bfdc080fc2540fe Mon Sep 17 00:00:00 2001 From: Manuel Bucher <manuel.bucher@hu-berlin.de> Date: Tue, 5 Jun 2018 10:56:57 +0200 Subject: [PATCH] added more warnings --- Makefile | 2 +- loesung.c | 50 +++++++++++++++++++++++++------------------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/Makefile b/Makefile index 16a9b76..fd12125 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ all: loesung WARNINGS = -Wall -Werror -OPTIONAL = -Werror -Wpedantic +OPTIONAL = -Wextra -Wpedantic -Wshadow DEBUG = -ggdb -fno-omit-frame-pointer OPTIMIZE = -O3 -std=c11 diff --git a/loesung.c b/loesung.c index 3efc75f..01f8716 100644 --- a/loesung.c +++ b/loesung.c @@ -21,7 +21,7 @@ typedef struct List { /** Initialisieren einer leeren Liste */ void list_init(List *s) { - s->p_top = 0; + s->p_top = NULL; s->size = 0; } @@ -35,10 +35,10 @@ Tile* list_push(List *s) { p_tile->x = 0; p_tile->y = 0; p_tile->p_next = s->p_top; - p_tile->p_prev = 0; + p_tile->p_prev = NULL; s->p_top = p_tile; s->size++; - if(p_tile->p_next != 0) { + if(p_tile->p_next != NULL) { p_tile->p_next->p_prev = p_tile; } return p_tile; @@ -51,7 +51,7 @@ Tile* list_push(List *s) { Tile* list_pop(List *s) { Tile *p_tile = s->p_top; s->p_top->p_next = p_tile->p_next; - s->p_top->p_prev = 0; + s->p_top->p_prev = NULL; return p_tile; } @@ -61,8 +61,8 @@ Tile* list_pop(List *s) { */ void list_free(List *s) { Tile *p_cur = s->p_top; - s->p_top = 0; - while (p_cur != 0) { + s->p_top = NULL; + while (p_cur != NULL) { Tile *p_next = p_cur->p_next; free(p_cur); p_cur = p_next; @@ -81,7 +81,8 @@ typedef enum ReadResult { typedef struct Field { Tile t_min; Tile t_max; - List tiles; + List tile_list; + Tile tile_array[]; } Field; /** Parsen einer Kachel(Tile) aus einer Zeile von StdIn @@ -155,13 +156,13 @@ inline uint32_t max(uint32_t a, uint32_t b) { * Parameter: * - Field* f pointer auf ein uninitialisiertes Feld, nach dem ausfuehren der * Funktion ist das Feld initialisiert, wenn es sich um eine gueltige Eingabe - * handelt. `f->num_tiles` Ist im Fehlerfall die Zeile, in dem die Eingabe + * handelt. `f->tile_list->size` Ist im Fehlerfall die Zeile, in dem die Eingabe * ungueltig ist. * * Return: * - ReadResult: - * ReadOk, falls das lesen erfolgreich war - * ReadErr..., falls die eingabe ungueltig ist. f ist dann nicht vollstaendig + * ReadOk, falls das lesen Erfolgreich war + * ReadErr..., falls die Eingabe ungueltig ist. `f` ist dann nicht vollstaendig * initialisiert */ ReadResult parse_input(Field *f) { @@ -170,10 +171,10 @@ ReadResult parse_input(Field *f) { f->t_max.x = 0; f->t_max.y = 0; // initialisieren der Liste - list_init(&f->tiles); + list_init(&f->tile_list); while (1) { - Tile *t = list_push(&f->tiles); // neues Element in die Liste einfuegen + Tile *t = list_push(&f->tile_list); // neues Element in die Liste einfuegen ReadResult result = read_line(t); switch (result) { case ReadOk: @@ -184,8 +185,8 @@ ReadResult parse_input(Field *f) { f->t_max.y = max(f->t_max.x, t->y); break; case ReadEof: - list_pop(&f->tiles); - if (f->tiles.size == 1) { + list_pop(&f->tile_list); + if (f->tile_list.size == 1) { return ReadEof; } else { return ReadOk; @@ -196,15 +197,14 @@ ReadResult parse_input(Field *f) { } } -int main (int argc, - char *argv[]) +int main (void) { Field f; ReadResult result = parse_input(&f); switch (result) { case ReadOk: printf("Valider Input\n"); - printf("Anzahl: %d\n", f.tiles.size); + printf("Anzahl: %d\n", f.tile_list.size); printf("Range(%d, %d), (%d, %d)\n", f.t_min.x, f.t_min.y, f.t_max.x, f.t_max.y); @@ -216,22 +216,22 @@ int main (int argc, // bei leerer Eingabe nichts ausgeben return EXIT_SUCCESS; case ReadErrIntegerOverflow: - fprintf(stderr, "Error in line %d: too big integer\n", f.tiles.size); - list_free(&f.tiles); + fprintf(stderr, "Error in line %d: too big integer\n", f.tile_list.size); + list_free(&f.tile_list); return EXIT_FAILURE; case ReadErrNonDigitCharacter: - fprintf(stderr, "Error in line %d: invalid character\n", f.tiles.size); - list_free(&f.tiles); + fprintf(stderr, "Error in line %d: invalid character\n", f.tile_list.size); + list_free(&f.tile_list); return EXIT_FAILURE; case ReadErrTooFewNumbers: fprintf(stderr, "Error in line %d: Too few numbers, expected exactly 2\n", - f.tiles.size); - list_free(&f.tiles); + f.tile_list.size); + list_free(&f.tile_list); return EXIT_FAILURE; case ReadErrTooManyNumbers: fprintf(stderr, "Error in line %d: Too much numbers, expected exactly 2\n", - f.tiles.size); - list_free(&f.tiles); + f.tile_list.size); + list_free(&f.tile_list); return EXIT_FAILURE; } return EXIT_SUCCESS; -- GitLab