我想创建一个任务列表,它应该在主循环()后面的任务调度器中使用。我试图用构造函数,但编译器会引发错误 could not covert '{doKeypad,2000,0}' from '<brace-enclosed initializer list>' to 'Task'
带有函数指针的数组构造函数?
struct Task{
void (*proc)(); // Process callback
unsigned long dly; // delay in ms
unsigned long mls = 0; // last run in millis()
};
Task task[] = { // This is much more readable
{doKeypad, 2000, 0}, // but it does not work :)
{doPower, 10, 0},
{doDallas, 800, 0},
{doLcd, 500, 0}
};
void doKeypad(){
// some code here...
}
// rest of code follows - doPower(), doDallas() ...
什么将是实现这一目标的最简单的方法?我可以做一个函数来手动填充任务数组,但它看起来很丑,并且不太可读。我已经看到了一些类似的问题,但他们对类和太复杂,我:/
您是否有前瞻性声明功能? –
另外,它纯粹是一种文体偏好,但是当我想初始化一个函数指针时,我使用操作符'&functionname'的地址,就像我制作数据指针时一样。裸函数的名字会衰减到一个指针,但是读者不清楚你正在处理函数指针而不是某种类型的函数对象。 –
在C++编译器上,假设正确的原型,它对我来说编译得很好:http://rextester.com/RXVP25357也许你的编译器不支持C++标准? –