我正在尋找通過指針傳遞一個可變數量的參數指向一個回調函數,也是由指針引用。有什麼辦法可以創建一個可以通過引用傳遞的參數列表嗎?將指針傳遞給C++中的可變參數?
例:
typedef struct MENUELEMENT
{
void* OK_func; void* OK_args;
} menuElement_t;
menuElement_t* curMenuElement;
menuElement_t menu[] =
{
//First Menu Element
(void*)menuDisplayText, (void*)("Test", (char*)&lcdBuffer[0]) //menuDisplayText is a function that takes two arguments
//Second Menu Element
(void*)menuDisplayVal, (void*)&value[0] //menuDisplayVal is a function that takes one argument
};
void loop() //Main Loop - just an example of how the function pointed to by curMenuElement is executed
{
curMenuElement = &menu[0];
if(KP_OK)
{
(*reinterpret_cast<void (*)(...)>(curMenuElement->OK_func))(curMenuElement->OK_args); //General template for function pointed to at OK_func with OK_args
}
}
到目前爲止運作良好的一個說法,但我無法弄清楚如何通過在結構體變量的初始化多個參數列表。這甚至可以不必使用使用va_list的構建器函數?
這裏沒有C。只是C++ ...和[void main()'](http://c-faq.com/ansi/voidmain.html)是什麼?和[爲什麼不應用它](http:/ /c-faq.com/ansi/voidmain3.html)? – Sebivor 2013-04-23 22:46:17
將函數指針轉換爲void *'是非法的。 – 2013-04-23 22:50:01
@JesseGood確實。在哪一天和哪個年齡,lambda的類型是「void *」?那將是一個非常混亂的時代! – Sebivor 2013-04-23 22:54:29