這個問題在這里已經有了答案: 指向 lambda 的函式指標目標的生命周期是多少? (2 個回答) 12 小時前關閉。
社區正在審查是否在12 小時前重新提出這個問題。
如果我有一些大致如下所示的 C 代碼:
void (*fun_ptr)(int);
void Test()
{
fun_ptr = [](int i) { /* do stuff */ };
}
int main()
{
Test();
/* do stuff */
fun_ptr(0);
return 0;
}
我可以期望該函式指標永遠存在嗎?還是它像結構一樣,只要 lambda 宣告在范圍內,它就有效?
鏈接的答案沒有完全解決這個問題,鏈接的答案沒有解釋為什么作用域 lambda 可以超過創建它們的代碼的范圍。
uj5u.com熱心網友回復:
fun_ptr 不指向 lambda。
它有效地指向一個static函式(在 lambda 類中定義),并且這個函式不需要一個活的 lambda 來作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/421220.html
標籤:
上一篇:如何使用acq/rel順序推斷兩個變數存盤/加載的順序?
下一篇:C 類不輸出正確的資料?
