我正在尝试制作一款需要 C 语言动态大小数组的游戏,但是我的代码不起作用,即使在我的另一个程序中相同的代码也能够工作。
这里是我的 #includes
:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "SwinGame.h" //API for graphics, physics etc
#include <math.h>
这里是我用到的相关结构体的
typedef
定义:typedef struct position_data
{
double x;
double y;
} position_data;
typedef enum enemy_type_data {CIRCLE, TRIANGLE, SQUARE} enemy_type_data;
typedef struct enemy_data
{
position_data location;
enemy_type_data type;
bitmap bmp;
double health;
double speed;
int path_to;
} enemy_data;
typedef struct enemy_data_array
{
int size;
enemy_data *data;
} enemy_data_array;
以下是向数组添加元素的函数:
void add_enemy(enemy_data_array *enemies)
{
enemy_data *new_array;
enemies->size++;
new_array = (enemy_data *)realloc(enemies->data, sizeof(enemy_data) * enemies->size);
if (new_array) //if realloc fails (ie out of memory) it will return null
{
enemies->data = new_array;
// enemies->data[enemies->size - 1] = read_enemy_data();
printf("Enemy added successfully!\n");
}
else
{
printf("FAILED. Out of Memory!\n");
enemies->size--;
}
}
这是我的主程序中的函数调用和变量声明:
int main()
{
path_data my_path[41];
enemy_data_array enemies;
enemies.size = 0;
add_enemy(&enemies);
}
为什么这个不起作用?
#include
语句和bitmap
和position_data
的定义。编译时,请始终启用所有警告,然后修复这些警告。(对于gcc
,至少使用:-Wall -Wextra -pedantic
,我还使用:-std=gnu99 -Wconversion
) - user3629249