2014-10-19 86 views
0

我寫你,因爲我在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) 

能否請你告訴我,我做錯了什麼?

謝謝你幫助我:)

+0

我認爲我做了我的typedef結構..矢量;在我的頭文件的頂部,不是? – Raoul722 2014-10-19 17:20:49

+1

應該在你的.c文件中包含'#include「vector.h」',但這裏並不重要。不能重現你的問題,編譯好。 (你也錯過了''int64_t。) – Mat 2014-10-19 17:25:45

+0

@ Raoul722你確定,這些只是錯誤信息,沒有錯過? – P0W 2014-10-19 17:25:47

回答

0

你應該包括vector.h這樣的:

#include "vector.h" 

不喜歡這樣的:

#include <vector.h> 
+0

所以你假設有兩個vector.h?如果不是編譯器應該拋出錯誤 – P0W 2014-10-19 17:31:14

+0

我看不到Raoul722發佈的任何其他問題。個人圖書館應該在引號中,而不是尖括號。 – MightyMouse 2014-10-19 17:32:49