繁体   English   中英

函数指针数组,传递数组中定义的值

[英]Function pointer array, passing values defined in array

我正在尝试定义一个函数指针数组,其中每个函数都包含一个int参数。 我还试图在数组声明中设置该 int 参数的值

所以我有一个TIMED_TASK结构,它将保存我想要传递的函数指针和值

typedef struct
{
   void (*proc)(int);  
   int delayMsec;     
} TIMED_TASK;

然后我有一个像这样的TIMED_TASK数组

static const TIMED_TASK attractSequence[] =
{
    { LightsOn, 1000 },
    { LightsOff, 500 },
    { EndSequence, 0 }
};

我希望它依次调用每个函数,将延迟值传递给每个函数。 这是我希望我有错误语法的地方(我仍在学习 C)。 我似乎根本没有打我的LightsOn()例程

void loop() // It's an arduino project :)
{
  attractSequence[sequence];
  sequence++;
}

void LightsOn(int pause)
{
  // I do not hit this routine for some reason?
  Serial.print("LIGHTS ON"); 
  Serial.print(pause);
}

void LightsOff(int pause)
{
  Serial.print("LIGHTS OFF");
  Serial.print(pause);
}

我完全有可能在这里采取了错误的方法,但希望您能看到我正在努力实现的目标。 非常欢迎任何建议!

如果你想只attractSequence一次attractSequence每个项目,你可以使用:

void loop()
{
   int count = sizeof(attractSequence)/sizeof(attractSequence[0]);
   for (int i = 0; i < count; ++i )
   {
     attractSequence[i].proc(attractSequence[i].delayMsec);
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM