Как пересылать Typedef'd struct в .h

у меня есть Preprocessor.h

#define MAX_FILES 15

struct Preprocessor {
    FILE fileVector[MAX_FILES];
    int currentFile;
};

typedef struct Preprocessor Prepro;

void Prepro_init(Prepro* p) {
    (*p).currentFile = 0;
}

Я понял, что я должен был отделить декларации от определений. Итак, я создал PreProcessor.c:

#define MAX_FILES 15

struct Preprocessor {
    FILE fileVector[MAX_FILES];
    int currentFile;
};

typedef struct Preprocessor Prepro;

и PreProcessor.h теперь:

void Prepro_init(Prepro* p) {
    (*p).currentFile = 0;
}

, что, очевидно, не работает, потому что PR ..h Не знаете тип препро. Я уже пробовал несколько комбинаций, ни один из них не работал. Я не могу найти решение.

23
задан erandros 31 August 2011 в 15:15
поделиться

1 ответ

Если вы хотите скрыть определение Preprocessor, вы можете просто поместить это в заголовочный файл:

struct Preprocessor;
typedef struct Preprocessor Prepro;

Но в более общем случае вам, вероятно, также понадобится определение Preprocessor в файл заголовка, чтобы позволить другому коду фактически использовать его.

8
ответ дан 29 November 2019 в 02:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: