Это называется непрозрачным struct
, полезно, когда вы хотите защитить доступ к членам (своего рода закрытый спецификатор).
таким образом, только file1.c
может получить доступ к членам struct
, чтобы сделать его видимым для остальных .c файлов, необходимых для
1) Определите struct
внутри .h файла
или
2) Доступ к членам через функцию:
//file.h
typedef struct foo foo;
int foo_val(const foo *);
//file1.c
#include "file.h" // Always prefer "" instead of <> for local headers
struct foo { // Notice that you don't need to retypedef the struct
int val;
};
int foo_val(const foo *f)
{
return f->val;
}
//file2.c
#include "file.h"
struct foo *f;
printf("%d", foo_val(f));