「callback function c」的推薦目錄:
- 關於callback function c 在 コバにゃんチャンネル Youtube 的最佳解答
- 關於callback function c 在 大象中醫 Youtube 的最佳解答
- 關於callback function c 在 大象中醫 Youtube 的最讚貼文
- 關於callback function c 在 Re: [問題] 有關callback function使用? - 看板C_and_CPP 的評價
- 關於callback function c 在 What is a "callback" in C and how are they implemented? 的評價
- 關於callback function c 在 Star - gists · GitHub 的評價
- 關於callback function c 在 What is the Callback (function pointer) and How it Works 的評價
- 關於callback function c 在 Callback C++ Class method from C 的評價
callback function c 在 大象中醫 Youtube 的最佳解答
callback function c 在 大象中醫 Youtube 的最讚貼文
callback function c 在 What is a "callback" in C and how are they implemented? 的推薦與評價
... <看更多>
相關內容
-
9 個答案
-
callback function vs ordinary function in C ...
-
Implementing callback functions in C - Stack Overflow
-
How do I implement callback functions in C ...
-
Callback functions in C++ - Stack Overflow
-
stackoverflow.com 的其他相關資訊
-
callback function vs ordinary function in C ...
-
Implementing callback functions in C - Stack Overflow
-
How do I implement callback functions in C ...
-
Callback functions in C++ - Stack Overflow
-
stackoverflow.com 的其他相關資訊
callback function c 在 Star - gists · GitHub 的推薦與評價
C ++11 callback example from http://tedfelix.com/software/c++-callbacks.html · Raw. callback.cpp ... A C++11 lambda function can be used. // Advantages:. ... <看更多>
callback function c 在 Re: [問題] 有關callback function使用? - 看板C_and_CPP 的推薦與評價
※ 引述《breakingdown (Loneliness in Taipei)》之銘言:
: 用C語言寫…
: 是在trace程式碼時產生的疑問…
: 原本寫法是直接呼叫函式,
: 但是後來有位前輩將幾個常會呼叫到的函數,
: 初始化時先存在一個function pointer arrary裡,
: 然後若需用到某一個function就呼叫對應到的function pointer array~
: 看起來就是間接呼叫的感覺…
: 不過改成這樣寫有什麼好處嗎?除了版面變簡單外…
^^^^^^^^
方便維護與修改
: 這就是所謂callback function嗎?
^^^^^^^^^
其實真的差蠻多的
: 謝謝~
先說說 function pointer 的東西,
小弟私以為,只有單用 function pointer,
除非是用在傳遞類似像 qsort 這種要自定義比較大小的東西外,
基本上單用沒什麼戰鬥力, 大多都是形成 function pointer array 才看得出它的好處
-----------------
假設一個簡單的問題, 已知 a,b 二數,
輸入 0: 加法;
輸入 1: 減法;
輸入 2: 除法;
輸入 3: 乘法
如果你是用
if (x==0) add()
else if(x==1) sub()
else if(x==2) mlu()
else if(x==3) div()
或是用 switch-case 方式, 那會很不好維護。假設今天又臨時加了一、二個功能
程式碼可能會是一長串的 if-else,用 function pointer array 會較適合,
也顯得較易修改
程式碼可以參考這裡 https://nopaste.csie.org/97101
(要改的話就改 function pointer array 初值便可)
裡面有一行很少有書提到 (其實我是沒找到有書提到)
typedef double(*myFuncPtr)(double, double); // typedef better
這是把 myFuncPtr 定義為一種資料形態,這種資料型態就是 bala bala 的函式指標,
這在製作、調用 dll/lib 時是蠻常看到的, 私以為先定義起來是較好的。
--------------------
再補一個好了, 其實之前 "私以為" 在 C 裡面, function pointer 是可以
進行 "某種程度" 上 的封裝, ex:
typedef struct _tagFile{
void (*Open)(char* filename);
void (*Write)(char* buffer);
void (*Read)(char* buffer);
void (*Close)();
}File;
這樣有什麼好處的話.. 嗯.. 可能去學 C++ 感受會強烈一點
----------------------
至於您說的 callback function,
事實上它的運作機制和一般main裡寫的 function 運作機制不同;
main 裡面寫的是「主動」去 call 你寫的 function,
callback 是「被動」等待某個條件產生才去執行你寫的 function,
這個條件通常指的是訊息的發生。比如說視窗上某個按鈕被按時,
才會去呼叫你寫的函式,便是「被動」等待 user 去按按鈕。
這部份要說絕對說不完,視窗程設本身就屬於一個龐大的機制,
有興趣去摸一下簡單的 win32 程式設計,大致上可以有基本的概念。
--
YouLoveMe() ? LetItBe() : LetMeFree();
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.76.142
※ 編輯: tropical72 來自: 180.177.76.142 (02/21 23:29)
※ 編輯: tropical72 來自: 180.177.76.142 (02/21 23:49)
... <看更多>