我想創建一個任務列表,它應該在主循環()後面的任務調度器中使用。我試圖用構造函數,但編譯器會引發錯誤 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++標準? –