C语言中,函数参数或者返回值中如果包含指针指向动态分配的内存区域,那么管理申请和释放就显得十分麻烦,一不小心就容易出错,今天突发奇想借鉴高级语言函数式编程的思想,其实C语言里的函数指针已经非常完美了,如果这样写,管理起来就会很方便,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()就用到
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。