2014-10-27 64 views
0

我知道如何用C++編寫代碼,但是這是我第一次我嘗試使用C.創建在C程序中我自己的std ::矢量

我甚至嘗試定義cVector.h和cVector.c爲了實現一些std :: vector功能。但是當我編譯我的代碼時,我收到以下錯誤。

下面是相同的代碼:

cVector.h

#define VECTOR_INITIAL_CAPACITY 520 

typedef struct { 
    int size;  // slots used so far 
    int capacity; // total available slots 
    int *data;  // array of integers we're storing 
} Vector; 

void vector_init(Vector *vector); 

cVector.c

#include "cVector.h" 
#include <stdio.h> 
#include <stdlib.h> 

void vector_init(Vector *vector) { 
    // initialize size and capacity 
    vector->size = 0; 
    vector->capacity = VECTOR_INITIAL_CAPACITY; 

    // allocate memory for vector->data 
    vector->data = malloc(sizeof(int) * vector->capacity); 
} 

這裏的用法:

#include "cVector.h" 

Vector times; 
vector_init(&times); 

int main{ 
....} 

最後錯誤:

Ser.c:135:13: error: expected declaration specifiers or ‘...’ before ‘&’ token 
+2

「在C程序中是否有任何使用std :: vector的方法?」不,但你可以實現類似的東西,這就是你想要做的。爲什麼'vector_init'是一個內聯函數? – 2014-10-27 14:42:12

+4

你沒有真正向我們展示足夠的Ser.c,這是發生錯誤的地方。請提供[完整的最小測試用例](http://sscce.org)。 – 2014-10-27 14:43:22

回答

4

您不能在文件範圍內調用函數。您需要將呼叫轉移到功能中(例如main)。

+0

ideone.com/7fRNKe – Quest 2014-10-27 14:56:16

0

您不能在另一個函數的聲明之外使用函數。順便說一句,你可以聲明變量爲全局變量,但行 vector_init(&times); 必須寫入主函數。 如果您對gcc的錯誤消息感興趣,那是因爲他正在嘗試查找新函數的聲明,這是,類型的名稱或...而是。