我寫你,因爲我在C中編寫了以下文件源,我無法使用gcc編譯它...我得到錯誤未知類型名稱:( 我搜索了但在大多數情況下,當有一個循環依賴或類似的東西,它出現在互聯網試圖編譯一個簡單的文件在C
所以我有一個源文件和一個頭文件:
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)
能否請你告訴我,我做錯了什麼?
謝謝你幫助我:)
我認爲我做了我的typedef結構..矢量;在我的頭文件的頂部,不是? – Raoul722 2014-10-19 17:20:49
應該在你的.c文件中包含'#include「vector.h」',但這裏並不重要。不能重現你的問題,編譯好。 (你也錯過了''int64_t。) –
Mat
2014-10-19 17:25:45
@ Raoul722你確定,這些只是錯誤信息,沒有錯過? – P0W 2014-10-19 17:25:47