在C程序中创建我自己的std::vector
Creating my own std::vector in C program
我知道如何使用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(×);
int main{
....}
最后错误:
Ser.c:135:13: error: expected declaration specifiers or ‘...’ before ‘&’ token
不能在这样的文件范围内调用函数。您需要将调用移动到一个函数中(例如main
)。
不能在另一个函数的声明之外使用函数。顺便说一句,你可以将变量声明为全局变量,但vector_init(×);
必须写在主函数内部。如果你对gcc的错误消息感兴趣,那是因为他试图找到一个新函数的声明,也就是类型的名称或。。。相反
相关文章:
- 使用 std::optional,而不是自己的结构
- 重载 + 自己的类和 std::string 的运算符
- 如何实现自己的生成器以与 std 发行版一起使用
- 我做了自己的std ::矢量,但我正在产生错误
- "The C++ Library doesen't provide a hash for this type." - 在 std::unordered_map 中使用自己的类
- 在命名空间中使用自己的类比较 std::vector 不会编译
- 给自己一个std::shared_ptr<std::thread>。已定义或未定义的行为
- 自己的迭代器因 std::sort 而崩溃
- 如何编写自己的代码来替换`sTD :: min_element`以在向量中找到最小的值
- 将自己的迭代器与 std::string 一起使用
- 自己的std ::带有回调或事件的ISTREAM,以避免拉或阻止读取
- 在我自己的班级上使用std :: inner_product
- C++ std::函数,返回它自己的类型(再次递归类型)
- std::istream&运算符>>和自己的向量类
- std::find 不想使用自己的类包装器
- 使用我自己的 plus() 函数时出现奇怪的 g++ 编译器错误 ( "std::plus is not a function" )
- 自己的 std::is_function 实现
- C++ - 如何使用自己的类复制 std::固定语法
- 自己的 std::string::find (暴力搜索)实现
- 在C程序中创建我自己的std::vector