2

我有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.

如何在头文件中使用这种类型?

4

1 回答 1

2

我现在不清楚哪些文件包括哪些。让我试着概括一下:

  • lexer.c包括str.hlexer.h
  • main.c包括lexer.h

那正确吗?在这种情况下,main.c无法编译,因为确实string缺少类型的定义。

lexer.h 往常一样需要包含在内,进入这个头文件str.h可能是个好主意。#include "str.h"

于 2013-11-09T13:35:40.317 回答