我写信给你是因为我在C中编写了以下文件来源,我无法用gcc编译它...我得到错误unknow类型名称:( 我在互联网上搜索,但在大多数情况下,它出现在存在循环依赖或类似的东西时。
所以我有一个源文件和一个头文件:
vector.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)
你能告诉我我做错了什么吗?
感谢您帮助我:)
答案 0 :(得分:0)
你应该像这样包含vector.h:
#include "vector.h"
不喜欢这样:
#include <vector.h>