如何在C中转发声明一个没有标记的typedef结构



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;
};

相关内容

最新更新