下标值既不是数组也不是指针也不是向量

时间:2013-12-07 15:17:10

标签: c pointers callback

我正在制作一个微型游戏的小游戏。这是一个打砖块游戏。我正试图以这种方式实现回调:

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;

2 个答案:

答案 0 :(得分:1)

一种可能性是块[special_block] .behaviour = app_DetectCollision_SendLife;发生的块的声明不正确,不是数组。检查它是不是像方块一样;

感谢

Mark Plotnick

答案 1 :(得分:0)

在我的系统上编译。使用时必须知道blocks。如果它位于不同的文件中,请使用extern让编译器知道它。

在C文件中定义了块:

Square  block[150];

在C文件中使用块(或在头文件中):

extern Square  block[150];