我正在制作一个微型游戏的小游戏。这是一个打砖块游戏。我正试图以这种方式实现回调:
typedef void (*TPFN_BEHAVIOUR)(int block_number);
typedef struct
{
int square_number;
int initial_x;
int initial_y;
int final_x;
int final_y;
TPFN_BEHAVIOUR behaviour;
}Square;
Square block[150];
然后我这样做:
block[i].behaviour = app_DetectCollision_SendLife;
app_Detect_Collision_SendLife是
void app_DetectCollision_SendLife(int i){
int initial_x = block[i].final_x - block[i].initial_x - 5;
int initial_y = block[i].final_y;
services_Screen_Draw(heart, initial_x, initial_y, 10, 9);
}
我收到以下行标题中显示的错误:
block[special_block].behaviour = app_DetectCollision_SendLife;
答案 0 :(得分:1)
一种可能性是块[special_block] .behaviour = app_DetectCollision_SendLife;发生的块的声明不正确,不是数组。检查它是不是像方块一样;
感谢
Mark Plotnick
答案 1 :(得分:0)
在我的系统上编译。使用时必须知道blocks
。如果它位于不同的文件中,请使用extern让编译器知道它。
在C文件中定义了块:
Square block[150];
在C文件中使用块(或在头文件中):
extern Square block[150];