file1.h:库代码。CANT更改
#ifndef FILE1_H_
#define FILE1_H_
typedef struct
{
int x;
} MY_STRUCT;
#endif /* FILE1_H_ */
file2.h:用户定义。可以更改。如何转发声明上面没有标记的typedef结构体?
#ifndef FILE2_H_
#define FILE2_H_
struct MY_STRUCT;
void print(struct MY_STRUCT * obj);
#endif /* FILE2_H_ *
file2.c:用户定义的。可以更改
#include "file2.h"
#include "file1.h"
#include <stdio.h>
void print(struct MY_STRUCT * obj)
{
printf("x: %d", obj->x);
}
main.c
#include "file2.h"
#include "file1.h"
int main(void){
MY_STRUCT obj1;
obj1.x = 100;
print(&obj1);
}
代码可以在这里看到。https://paiza.io/projects/wa2PCvUswWyyAzdxxjggxQ?language=c
不可能"转发声明";typedef。你必须给结构一个标签,例如:
typedef struct my_struct MY_STRUCT;
// ... later
struct my_struct
{
int x;
};