(百分100 !!! 求解一个小问题)有关回调函数参数问题

soul850224 2012-01-11 07:15:54
好。
我有个问题..如下:
就是说 回调函数的参数并非是我定义的
回调函数的调用也不是我

我有什么办法可以获取到回调函数中的参数值,就是在主函数中或去
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback_other);
//这个是注册回调
size_t write_callback(char *buffer,size_t size)
// 这是回调声明

问题是我想获取到 这个buffer 在主函数或其他函数中

不可以用全局变量 因为我要封成库 支持多线程...

拜托各位大侠解惑

大家踊跃提意见 人人有分 当然有效解决分多些 谢谢 各位!!!!
...全文
282 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
soul850224 2012-01-12
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 xidianhunhun 的回复:]
可以在curl_easy_setopt这里面增加一个参数,把buf传进去。
[/Quote]

curl_easy_setopt()
是a库提供的
改不了...
xiexie
AthlonXP1800plus 2012-01-12
  • 打赏
  • 举报
回复
可以在curl_easy_setopt这里面增加一个参数,把buf传进去。
gqjjqg 2012-01-12
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 soul850224 的回复:]

完了 我有点晕了/./
其实就是这样一个问题:简单的例子

// 我想编译成的a.lib库的接口
fun(char *buf,int len...)
{}

// 我在我库中调用的库提供的回调
callback(char *buf_1,int len...)
{}

其实我就是想让fun中的buf值为 callback中的buf_1

....
[/Quote]

我语文不太好,搞不太懂你的意思....
soul850224 2012-01-12
  • 打赏
  • 举报
回复
这个 这个 就是这么个问题
不想用全局..静态..
soul850224 2012-01-12
  • 打赏
  • 举报
回复
完了 我有点晕了/./
其实就是这样一个问题:简单的例子

// 我想编译成的a.lib库的接口
fun(char *buf,int len...)
{}

// 我在我库中调用的库提供的回调
callback(char *buf_1,int len...)
{}

其实我就是想让fun中的buf值为 callback中的buf_1

....

gqjjqg 2012-01-12
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 soul850224 的回复:]

callback函数的代码你不是可以看到的吗?
在函数里面调用你自己的方法,把buffer作参数传给你不就好了?


可能是我描述的有问题:

我需要回调函数中数值的函数 还需要别的函数中的传值
所以这样好像不行...
[/Quote]

我晕,不是一样的吗?
比如你的库要用callback中的buffer的内容。
那你就可以在库里面分配好指定的大小,然后在callback里调用一个set的方法,把buffer内容copy到 你库里分配好的空间,然后你想怎么用库的东西就怎么用。
除非你想对buffer地址里的内容进行修改,如果是这样,那你肯定要在这个callback里干活的。
soul850224 2012-01-12
  • 打赏
  • 举报
回复
callback函数的代码你不是可以看到的吗?
在函数里面调用你自己的方法,把buffer作参数传给你不就好了?


可能是我描述的有问题:

我需要回调函数中数值的函数 还需要别的函数中的传值
所以这样好像不行...
gqjjqg 2012-01-12
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 soul850224 的回复:]

引用 13 楼 gqjjqg 的回复:
引用 12 楼 soul850224 的回复:

谢谢 各位捧场 指教

其实我的问题就是:

问题是我想在主函数或者其他函数中获取到这个buffer?

但是不想用 全局 静态

还有什么别的办法解决么
思路也好 谢了 各位


你的意思是说开放给你的只有一个callback,你要在其他地方获取到buffer留作他用?
不……
[/Quote]

callback函数的代码你不是可以看到的吗?
在函数里面调用你自己的方法,把buffer作参数传给你不就好了?
soul850224 2012-01-12
  • 打赏
  • 举报
回复
我想要是最后真没办法

只能取个折中的方法

互斥+回调callback_1()中在注册回调callback_2()了。

各位大侠 踊跃提意见 或 思路 谢谢 各位了..

morrist1987 2012-01-12
  • 打赏
  • 举报
回复
在callback中再注册一个回调函数?每次处理callback之后就去处理callback2?

瞎想的,不可行无喷,
soul850224 2012-01-12
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 gqjjqg 的回复:]
引用 12 楼 soul850224 的回复:

谢谢 各位捧场 指教

其实我的问题就是:

问题是我想在主函数或者其他函数中获取到这个buffer?

但是不想用 全局 静态

还有什么别的办法解决么
思路也好 谢了 各位


你的意思是说开放给你的只有一个callback,你要在其他地方获取到buffer留作他用?
不用全局,那你把想做的事情全放callbac……
[/Quote]

嗯 怎么实现 在callback 中把数据传到其他的函数 或是 主函数中呢?

谢谢
gqjjqg 2012-01-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 soul850224 的回复:]

谢谢 各位捧场 指教

其实我的问题就是:

问题是我想在主函数或者其他函数中获取到这个buffer?

但是不想用 全局 静态

还有什么别的办法解决么
思路也好 谢了 各位
[/Quote]

你的意思是说开放给你的只有一个callback,你要在其他地方获取到buffer留作他用?
不用全局,那你把想做的事情全放callback里不就好了,或者在callback里吧buffer传递给你的主函数和其他函数呗。
soul850224 2012-01-11
  • 打赏
  • 举报
回复
谢谢 各位捧场 指教

其实我的问题就是:

问题是我想在主函数或者其他函数中获取到这个buffer?

但是不想用 全局 静态

还有什么别的办法解决么
思路也好 谢了 各位
soul850224 2012-01-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dourgulf 的回复:]
感觉LZ是个外国人说的中国话~

引用楼主 soul850224 的回复:
问题是我想获取到 这个buffer 在主函数或其他函数中

LZ是想说:
问题是我想在主函数或者其他函数中获取到这个buffer?
是这样吗?

我想全局变量是必须的,你要封装成库或者多线程使用也不见得就一定不能用全局变量。
比如定义
static std::string g_buffer;
get……
[/Quote]

呵呵 我看来看去时说的有问题
恩 就是这个意思

问题是我想在主函数或者其他函数中获取到这个buffer?
因为要运用的地方时 开发板上 比较要求实时性 和 效率
所以是想最好不用全局+互斥...
不过还是谢谢 \(^o^)/~
mymtom 2012-01-11
  • 打赏
  • 举报
回复
很久以前用过,明天去公司找找。
子达如何 2012-01-11
  • 打赏
  • 举报
回复
感觉LZ是个外国人说的中国话~
[Quote=引用楼主 soul850224 的回复:]
问题是我想获取到 这个buffer 在主函数或其他函数中
[/Quote]
LZ是想说:
问题是我想在主函数或者其他函数中获取到这个buffer?
是这样吗?

我想全局变量是必须的,你要封装成库或者多线程使用也不见得就一定不能用全局变量。
比如定义
static std::string g_buffer;
get_buffer(std::string& buf);
set_buffer(const std::string& buf);
在回调函数中set_buffer,主函数或者其他函数需要访问buffer的时候调用get_buffer。对于多线程,你只需要在get_buffer和set_buffer中做好互斥访问就可以了。
进一步:你应该抽象成一个类,把g_buffer和互斥需要的相关变量封装起来。
将这个类设计成一个“单例”。
BTW:设计库要比写应用程序付出太多太多的精力了~
gfzeng 2012-01-11
  • 打赏
  • 举报
回复
变量用个指针指, 或者全局变量就可以了。
ProgrammingRing 2012-01-11
  • 打赏
  • 举报
回复
同等解释。。。
yuanhong2910 2012-01-11
  • 打赏
  • 举报
回复
定义一个静态变量,在回调里面把buffer赋值给这个静态变量,在写一个函数获取这个静态变量
氰客 2012-01-11
  • 打赏
  • 举报
回复
等解释、
加载更多回复(2)

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧