у меня есть 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 Не знаете тип препро. Я уже пробовал несколько комбинаций, ни один из них не работал. Я не могу найти решение.
Если вы хотите скрыть определение Preprocessor
, вы можете просто поместить это в заголовочный файл:
struct Preprocessor;
typedef struct Preprocessor Prepro;
Но в более общем случае вам, вероятно, также понадобится определение Preprocessor
в файл заголовка, чтобы позволить другому коду фактически использовать его.