Создание моего собственного std :: vector в C-программе

0

Я знаю, как кодировать с помощью 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
    "Есть ли способ использовать std :: vector в программе на C?" Нет, но вы можете реализовать нечто подобное, что вы пытаетесь сделать. Почему vector_init является встроенной функцией?
  • 4
    Вы действительно не показываете нам достаточно Ser.c, где и происходит ошибка. Пожалуйста, представьте полный, минимальный тестовый пример .
Теги:
vector

2 ответа

4
Лучший ответ

Вы не можете вызвать функцию в такой области. Вам нужно перевести вызов в функцию (например, main).

  • 0
    ideone.com/7fRNKe
0

Вы не можете использовать функцию вне объявления другой функции. Btw вы можете объявлять переменные как глобальные переменные, но строку vector_init(&times); должны быть записаны внутри основной функции. Если вам интересно сообщение об ошибке gcc из-за того, что он пытается найти объявление новой функции, это имя типа или... вместо этого.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню