簡體   English   中英

函數將指針返回到函數,將指針返回到函數

[英]Function returns pointer to function that returns pointer to function

我試圖創建一個線程狀態機,其中每個狀態都返回指向下一個狀態的指針。 我運行着許多狀態機,因此所有這些狀態機的下一個狀態都存儲在一個數組中,該數組按順序循環調用它們。 所以我想做的是:

pState[i] = (pState[i])();

我了解一般如何返回函數指針,但是由於我需要返回的指針是返回函數指針的函數類型,因此遞歸使我感到困惑。 狀態如下:

pSatateFunc StateA(void){
// ... code ...
return StateB;
}

那么,我該如何定義它以便定義指針數組?

您不能直接執行此操作,但是可以通過引入僅成員是函數指針的struct類型來間接執行此操作:

struct state
{
    struct state (*func)(void);
};

然后定義您的函數以返回此類型:

struct state StateA(void)
{
    /* ... code ... */
    return (struct state){ StateB };
}

您的pstate數組也將是這種類型:

struct state pState[N];

/* ... */

pState[i] = pState[i].func();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM