|
C語言中,函數(shù)參數(shù)或者返回值中如果包含指針指向動態(tài)分配的內存區(qū)域,那么管理申請和釋放就顯得十分麻煩,一不小心就容易出錯,今天突發(fā)奇想借鑒高級語言函數(shù)式編程的思想,其實C語言里的函數(shù)指針已經(jīng)非常完美了,如果這樣寫,管理起來就會很方便,callback中無需關注buffer的釋放。
07 |
void callback(const char *
buffer, int
len) {
|
09 |
for (i =
0; i < len; i++) { |
15 |
void foo(void (*
callback)(const
char *, int)) {
|
17 |
buffer = (char *)malloc(100); |
18 |
memset(buffer, 0, 100); |
19 |
strcpy(buffer, "Hello, World!"); |
20 |
callback((const char *)buffer, strlen(buffer)); |
因為&callback == callback
void foo()可以寫成這樣比較清晰
typedef void (* callbackPtr)(...) ;
void foo(callbackPtr cb)()
{
if (!cb) return; //還可以檢查空值
...
cb(...);
...
}
這種寫法在win32里很常見,如CreateThread()就用到
|