+ 8
Struct in header file
Can i declare a struct in a header file test.h, define it in test.c file and after that use the struct in otherFile.c where i included the header file test.h. Or do i have to define the struct in the header file completly to use it in .c files where i included the header?
12 Respuestas
+ 2
I have done that:
In header file test.h( surrounded by #ifndef #define .... #endif):
typedef struct mystruct mystruct;
void mystruct func();
And in test.c file:
struct { int x; int y};
void mystruct func(){
..... definition
}
How would i use this function and struct in otherFile.c?
(And btw thank you very much for your help :D)
+ 1
I also have funktion declarations in the header file which i define in test.c. When i also include test.c the Compiler tells me that i have multiple definitons of the functions
Is it even possible to declare the functions and the struct in the same test.c file and use the functions and the struct in otherFile.c ?
+ 1
And of course i included test.h in test.c
+ 1
Thank you thats actually my problem..
The complier tells me "error: dereferencing pointer to incomplete type 'mystruct'"
(I thought thats not the problem so i used easier examples)
My files actually look like this:
test.h :
typedef struct struct1 struct1;
typedef struct struct2 struct2;
struct2* func(struct1* s);
test.c:
struct struct1 { struct2* x; };
struct struct2 { struct2* y; };
struct2* func(struct1* s){
return s->x;
}
Otherfile.c
#include "test.h"
int main(){
... struct1* 'm' points to allocated memory.....
m->x
}
This only works when i define the struct already in the header file.
When i do it like this the compiler tells me that im dereferencing pointer to incomplete type struct1 with "m->x"
+ 1
Thank you that was really helpful 😊
0
It always works when i define the struct in the header and only the function in test.c
But when i define everything in c the otherFile.c it does not
So i thought its maybe not possible that way
(But could also be another problem then)