试图用C编译一个简单的文件

时间:2014-10-19 17:15:06

标签: c file gcc compilation header

我写信给你是因为我在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)

你能告诉我我做错了什么吗?

感谢您帮助我:)

1 个答案:

答案 0 :(得分:0)

你应该像这样包含vector.h:

#include "vector.h"

不喜欢这样:

#include <vector.h>
相关问题