Передача указателей на частные структуры в C? - PullRequest
1 голос
/ 10 декабря 2010

Как я могу передавать указатели на структуры, которые имеют частные определения, без добавления типов указателей с struct?

Например, это работает:

typedef struct Handle {
    Ino ino;
} Handle;

bool handle_open(Handle **);

Но если я перенесу определение структуры в исходный файл, другие исходные файлы будут вынуждены использовать struct Handle * вместо Handle *.

Ответы [ 3 ]

5 голосов
/ 10 декабря 2010

Вы можете typedef struct Handle Handle;. В этом случае Handle является неполным типом (как и struct Handle).

2 голосов
/ 10 декабря 2010

В заголовке все должно быть хорошо:

struct _Handle;
typedef struct _Handle Handle;

Затем вы можете поместить фактическое определение _Handle в тело файла, который фактически манипулирует структурой.

0 голосов
/ 10 декабря 2010

если я перемещу определение структуры в исходный файл, другие исходные файлы будут вынуждены использовать struct Handle * вместо Handle *

Затем typedef указатель вместо (или в дополнение к) структуры.

...