Question

I have lexer.c file, which should be included to another .c file. It have

int getToken(string *attribute) {}

function and same prototype in lexer.h header file. Also i have helper str.c file for simplify work with strings. It has header file with declaration of type string:

typedef struct {
    char* str;      //string with \0 at the end
    int length;     //length of the string
    int allocated;  //allocated memory size
} string;

So, lexer.h included from main file. Then lexer.c starts with:

#include "str.h"
#include "lexer.h"

As i understanding, after including str.h type string is visible for lexer.c and lexer.h. But i have compilation error at the prototype in header file:

./lexer.h:65:14: error: unknown type name 'string'
int getToken(string *attribute);
             ^
1 error generated.

How can i use this type in header file?

Was it helpful?

Solution

I am not clear now which files include which. Let me try to recapitulate this:

  • lexer.c includes str.h and lexer.h
  • main.c includes lexer.h

Is that right? In this case, main.c cannot be compiled as, indeed, the definition of the string type is missing.

As lexer.h always requires str.h to be included, it might be a good idea to out #include "str.h" into this header file.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top