У меня есть файл lexer.c, который должен быть включен в файл .c. Он имеетНеизвестный тип имени в прототипе файла заголовка
int getToken(string *attribute) {}
функции и тот же прототип в lexer.h файл заголовка. Также у меня есть помощник str.c файл для упрощения работы со строками. Он имеет заголовочный файл с декларацией типа строки:
typedef struct {
char* str; //string with \0 at the end
int length; //length of the string
int allocated; //allocated memory size
} string;
Так, lexer.h включенного из основного файла. Тогда lexer.c начинается с:
#include "str.h"
#include "lexer.h"
Как я пониманию, после включения str.h Типу строку видна для lexer.c и lexer.h. Но у меня есть ошибки компиляции в прототипе в заголовочном файле:
./lexer.h:65:14: error: unknown type name 'string'
int getToken(string *attribute);
^
1 error generated.
Как я могу использовать этот тип в заголовочном файле?
Проверьте, нет ли каких-либо аргументов # ifdef или других причин, по которым ваш typedef может быть исключен ... и не связан с вашей проблемой, но «у меня есть файл lexer.c, который должен быть включен в другой файл .c» - если это не тип .... не # включить один .c в другой. Иногда это может работать нормально, но как образец, который следует за ним, в конечном итоге вызовет проблемы. – mah
Почему бы вам не сделать это простым, ваши пользовательские объявления в один общий заголовочный файл и включить его в требуемые файлы .c. –
@mah извините за мой стиль письма, я подразумевал включение в другие .c файлы через файл заголовка lexer.h –