【发布时间】:2014-10-19 17:15:05
【问题描述】:
我给你写信是因为我用 C 语言编写了以下文件源,但我无法用 gcc 编译它...我收到错误 unknow type name :( 我在互联网上搜索过,但在大多数情况下,它会在存在循环依赖或类似情况时出现。
所以我有一个源文件和一个头文件:
矢量.h:
#ifndef VECTOR_H
#define VECTOR_H
#include <stdio.h>
typedef struct dynamic_array_struct
{
uint64_t *data;
size_t capacity;
size_t size;
} vector;
int
vector_init(vector *, size_t);
int
vector_reinit(vector *);
#endif /* VECTOR_H */
和vector.c
#include <stdlib.h>
#include <vector.h>
int
vector_init(vector *v, size_t init_capacity)
{
v->data = (uint64_t *)malloc(init_capacity*sizeof(uint64_t));
v->capacity = init_capacity;
v->size = 0;
return 1;
}
int
vector_reinit(vector *v)
{
free(v->data);
v->data = (uint64_t *)malloc(v->capacity*sizeof(uint64_t));
v->size = 0;
return 1;
}
但是当我尝试使用gcc -c vector.c -I . 编译它时,我收到以下错误:
In file included from vector.c:2:0:
./vector.h:2:13: error: unknown type name ‘vector’
vector_init(vector *, size_t);
^
./vector.h:5:15: error: unknown type name ‘vector’
vector_reinit(vector *);
^
vector.c:6:13: error: unknown type name ‘vector’
vector_init(vector *v, size_t init_capacity)
^
vector.c:14:15: error: unknown type name ‘vector’
vector_reinit(vector *v)
你能告诉我我做错了什么吗?
谢谢你帮助我:)
【问题讨论】:
-
我以为我用我的 typedef struct ... vector;在我的头文件的顶部,没有?
-
在你的 .c 文件中应该是
#include "vector.h",但在这里并不重要。也无法重现您的问题,编译正常。 (对于 int64_t,您也缺少<stdint.h>。) -
@Raoul722 你确定,这些只是错误信息,没有遗漏吗?
标签: c file gcc compilation header