Ich habe drei DateienVariable war mit einem nie abgeschlossen Typ deklarieren
- main.c
- myStruct.h
- myStruct.c
ich einige Post gelesen, wo man Definieren Sie eine Struktur und Kapselung und ich möchte meine Struktur in der Header-Datei deklarieren und in der Quelldatei definieren.
Das habe ich getestet.
myStruct.h
// myStruct.h
#include "stdint.h"
typedef struct myStruct myStruct_type;
myStruct.c
// myStruct.c
#include "myStruct.h"
struct myStruct {
uint32_t itemA;
uint32_t itemB;
uint32_t *pointerA;
uint32_t *pointerB;
};
main.c
// main.c
#include "myStruct.h"
myStruct_type testStruct; // This is where I get the error message
int main (void) {
while (1);
return 0;
}
Wenn ich versuche zu kompilieren (Keil uVision) bekomme ich folgende Fehlermeldung „Variable 'testStruct' wurde mit einem nie fertiggestellten Typ deklariert. myStruct_type testStruct "
Was habe ich verpasst?
Die Strukturdefinition muss an jedem Punkt sichtbar sein, an dem sie benötigt wird. Verschieben Sie es von der c-Datei in die h-Datei. –
Verschieben Sie 'struct myStruct' in die Header-Datei. Sonst ist es für main.c nicht sichtbar. – kaylum
Alternativ kann etwas wie 'myStruct_type * new_myStruct_type (void) {return malloc (sizeof (myStruct_type)); } 'in' myStruct.c' und in 'main()' definiere einfach 'myStruct_type * pmyStruct = new_myStruct_type();'. – alk