在C程序中创建自己的std :: vector

时间:2014-10-27 14:39:59

标签: c++ c vector

我知道如何用C ++编写代码,但这是我第一次尝试使用C.

我甚至尝试定义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 个答案:

答案 0 :(得分:4)

您无法在此类文件范围内调用函数。您需要将调用移动到一个函数中(例如main)。

答案 1 :(得分:0)

您不能在另一个功能的声明之外使用某个功能。顺便说一句,你可以将变量声明为全局变量但行 vector_init(&times); 必须写在main函数内部。 如果您对gcc的错误消息感兴趣,那是因为他试图找到新函数的声明,这是一个类型的名称或者......而是。