vector_int.h は、自作の動的配列 (ベクター) 構造を持つヘッダーです。
test.c はテスト プログラムです。
すべてのコードは次のとおりです。
vector_int.h:
#include <stdio.h>
typedef struct
{
long int len; // Length
int *array; // Dynamic Array
} IntVector;
void ResizeIntVector(IntVector *vector, int size) // Resizing of vector
{
realloc(vector->array, size * sizeof(int));
vector->len = size; // Changing of length variable
}
void SetIntVectorCell(IntVector *vector, unsigned int cell_number, int cell_value) // Put cell_value in array[cell_number]
{
if (cell_number >= vector->len)
ResizeVectorInt(&vector, cell_number); // Grow size of memory if it's not enough
vector->array[cell_number] = cell_value;
}
test.c:
#include "vector_int.h"
#include <stdio.h>
int main()
{
IntVector vector;
int n;
scanf("%d", &n);
int i;
for (i = 0; i < n; i++) // testing
{
SetIntVectorCell(&vector, i, i);
printf("%d ", vector.array[i]);
}
return 0;
}
ログ:
1 0 D:\Work\Raspberry Pi\test.c In file included from D:\Work\Raspberry Pi\test.c
D:\Work\Raspberry Pi\vector_int.h In function 'ResizeIntVector':
11 2 D:\Work\Raspberry Pi\vector_int.h [Warning] incompatible implicit declaration of built-in function 'realloc' [enabled by default]
[Linker error] C:\Users\ALEXAN~1\AppData\Local\Temp\cccFKqxs.o:test.c:(.text+0x4a): undefined reference to `ResizeVectorInt'
collect2: ld returned 1 exit status
realloc関数の使い方に誤りがあると思いますが、大丈夫だと思いました。私を助けて、間違いや間違いを見つけてください。