Fehler: expected ')' before '*' token
Habe ich diese include-Datei (memory .h
)
#ifndef MEMORY_H
#define MEMORY_H
#ifdef __cplusplus
extern "C" {
#endif
typedef struct mmemory {
int* cells;
int* current_cell;
int cells_number;
} memory;
void memory_init(memory* mymemory, int size);
void step_left(memory* mymemory, int steps);
void step_right(memory* mymemory, int steps);
void cell_inc(memory* mymemory, int quantity);
void print_cell(memory* mymemory);
void get_char(memory* mymemory);
#ifdef __cplusplus
}
#endif
#endif /* MEMORY_H */
Und diese Implementierungsdatei (memory.c
)
#include <stdlib.h>
#include "memory.h"
void
memory_init (memory* mymemory, int size)
{
mymemory->cells = (int*) malloc (sizeof (int) * size);
mymemory->cells_number = size;
mymemory->current_cell = (int*) ((mymemory->cells_number / 2) * sizeof (int));
}
... //other function definitions follow
Wenn ich versuche zu kompilieren memory.c
ich bekomme diese Fehlermeldung für jede Funktion definition
src/memory.c:5: Fehler: expected ')' before '*' token
wo die Linie 5 ist die definition der Funktion für memory_init()
Kann mir bitte jemand sagen warum ich diese Fehlermeldung bekommen?
Welchen compiler/Plattform?
gcc version 4.2.1 auf OSX Snow Leopard mit -ansi-Schalter
Vielleicht einige andere Kopfzeile bereits definiert MEMORY_H vor Ihrem header enthalten ist?
gcc version 4.2.1 auf OSX Snow Leopard mit -ansi-Schalter
Vielleicht einige andere Kopfzeile bereits definiert MEMORY_H vor Ihrem header enthalten ist?
InformationsquelleAutor Federico klez Culloca | 2010-09-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weil das system
memory.h
ist shadowing Ihrmemory.h
, wodurch die#include
erfolgreich, ohne die Erklärung Ihrer Arten. Mehrere Lösungsansätze:#include <myproj/memory.h>
).#include
Vorrang-Regeln für Dateinamen verpackt in"
wirksam werden.Um künftige Probleme zu vermeiden, gibt es eine schnelle Referenz für die standard-C-header-Namen?
Das scheint eine bestehende Frage: stackoverflow.com/questions/2027991/... . In diesem Fall ist aber die standards bezogene Listen hätte nicht geholfen, weil
memory.h
ist kein standard-header. Sie können immer sehen, was Ihre bestimmten OS bietet mit so etwas wiefind /usr/include/ -type f -name '*.h'
.Vorausgesetzt natürlich, dass die jeweilige OS hat
find
, und hält Header in/usr/include/
. Nicht alle Menschen sind glücklich genug, um solch Betriebssysteme.InformationsquelleAutor llasram
Diese Antwort ist wirklich spät, aber ich traf ein ähnliches problem.
Ich denke, dein problem bezieht sich auf einen Tippfehler in den .h Datei, in der Sie deklariert ein struct mmemory. Wenn Sie entfernen die extra 'm' sollte es funktionieren.
InformationsquelleAutor Tom Groentjes
In Ihrem code, den Sie festgelegt haben, wie dies für Speicher.h
Im Falle eines Ihrer anderen Dateien, die Sie verwenden in Ihrem Projekt ist, dass die gleiche #define ich.e MEMORY_H dann können Sie diese Fehlermeldung erhalten.
Lösung:
InformationsquelleAutor jignesh63