函数指针数组,传递数组中定义的值
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
的每一项,你可以使用:
void loop()
{
int count = sizeof(attractSequence)/sizeof(attractSequence[0]);
for (int i = 0; i < count; ++i )
{
attractSequence[i].proc(attractSequence[i].delayMsec);
}
}
我正在尝试定义一个函数指针数组,其中每个函数都包含一个 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
的每一项,你可以使用:
void loop()
{
int count = sizeof(attractSequence)/sizeof(attractSequence[0]);
for (int i = 0; i < count; ++i )
{
attractSequence[i].proc(attractSequence[i].delayMsec);
}
}