【问题标题】:Trying to compile a simple file in C试图在 C 中编译一个简单的文件
【发布时间】: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,您也缺少 &lt;stdint.h&gt;。)
  • @Raoul722 你确定,这些只是错误信息,没有遗漏吗?

标签: c file gcc compilation header


【解决方案1】:

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

#include "vector.h"

不是这样的:

#include <vector.h>

【讨论】:

  • 所以你假设有两个 vector.h ?如果不是编译器应该抛出一个错误
  • 我看不出 Raoul722 发布的任何其他问题。个人库应该用引号括起来,而不是尖括号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
  • 1970-01-01
  • 2013-08-22
  • 1970-01-01
相关资源
最近更新 更多