簡體   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