[英]Syntax for a pointer to a function returning a function pointer in C
如何聲明一個返回另一個函數指針的函數的指針? 請與我分享語法和示例代碼段。
另外,在哪種情況下會使用返回函數指針的函數指針?
這對於typedef來說是微不足道的:
typedef int(*FP0)(void);
typedef FP0(*FP1)(void);
FP1
是指向函數的指針類型,該函數返回FP0
類型的函數指針。
至於什么時候這很有用,如果你有一個函數返回一個函數指針,你需要獲取或存儲一個指向這個函數的指針,這很有用。
如果你避免使用typedef
,那很難。 例如,考慮來自C標准的signal()
:
extern void (*signal(int, void (*)(int)))(int);
void handler(int signum)
{
...
}
if (signal(SIGINT, SIG_IGN) != SIG_IGN)
signal(SIGINT, handler);
使用typedef,它更容易:
typedef void Handler(int);
extern Handler *signal(int, Handler *);
void handler(int signum)
{
...
}
if (signal(SIGINT, SIG_IGN) != SIG_IGN)
signal(SIGINT, handler);
請注意,對於signal()
函數,通常只需使用<signal.h>
並讓系統擔心聲明它。
如果你不想要第二個typedef,
typedef float(*(*fptr_t)(int))(double)
這意味着“ 聲明fptr_t作為指向函數的指針(int)返回指向函數(double)返回float的指針 ”(fptr_t:int→(double→float))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.