社区
C++ 语言
帖子详情
如何用相同方法调用函数参数个数、数据类型都不同的库函数啊
bclife
2009-06-01 08:08:16
我这有个函数指针容器fun[i]--》指向一个库函数
这些库函数的参数个数、数据类型各自不同
那我如何才能用相同的方法去访问这些函数呢?
我现在想到得方法只有再写一个函数 转换传递过来的参数 然后再调用库函数
这个方法要写很多函数 很麻烦 不知道有没有现成的可以用啊
...全文
213
18
打赏
收藏
如何用相同方法调用函数参数个数、数据类型都不同的库函数啊
我这有个函数指针容器fun[i]--》指向一个库函数 这些库函数的参数个数、数据类型各自不同 那我如何才能用相同的方法去访问这些函数呢? 我现在想到得方法只有再写一个函数 转换传递过来的参数 然后再调用库函数 这个方法要写很多函数 很麻烦 不知道有没有现成的可以用啊
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fairchild811
2009-06-01
打赏
举报
回复
函数指针吧
lkgd1982
2009-06-01
打赏
举报
回复
不知道,帮顶
bclife
2009-06-01
打赏
举报
回复
[Quote=引用 14 楼 taodm 的回复:]
楼主,没有合适的解往往是因为问题本身是错误的。
所以,建议楼主google “提问的智慧”
[/Quote]
我主要是想能不能弄个类似模板的东西 这个功能很多程序里要用
bclife
2009-06-01
打赏
举报
回复
[Quote=引用 14 楼 taodm 的回复:]
楼主,没有合适的解往往是因为问题本身是错误的。
所以,建议楼主google “提问的智慧”
[/Quote]
思考一下
taodm
2009-06-01
打赏
举报
回复
楼主,没有合适的解往往是因为问题本身是错误的。
所以,建议楼主google “提问的智慧”
pathuang68
2009-06-01
打赏
举报
回复
不可能做到!
pengzhixi
2009-06-01
打赏
举报
回复
学习
red-fly
2009-06-01
打赏
举报
回复
1. 你可以参考linux下的sprintf函数的实现,即如何取得传递进来的参数。当然,这个在网上应该也同样可以找到很多例子,不一定非得到linux去找它的实现
2. 得到了传入的参数个数,然后你必需得知道你要调用的函数的参数个数及每个参数的类型,把你得到的参数列表,按照原始函数的参数类型一个一个进行强制转换,以这种方式来调用你的函数
如下所示:
void testit ( int i, ...)
{
// 1. 获取参数列表
va_list argptr;
va_start(argptr, i);
// 根据不同的库函数,则它们的参数个数和每个参数的类型已经固定,所以这里真对每个库函数进行单独的调用,其中注意它们的参数个数及类型的使用
switch( i )
{
case 0: fun[i]( va_arg( argptr, int ), va_arg( argptr, char* ), va_arg( argptr, char ) ); break;
case 1: fun[i]( va_arg( argptr, long ), va_arg( argptr, long ), va_arg( argptr, int* ) ); break;
case 2: fun[i]( va_arg( argptr, long ), va_arg( argptr, char* ) ); break;
... ...
}
va_end(argptr);
}
Sou2012
2009-06-01
打赏
举报
回复
学习了!!
猫已经找不回了
2009-06-01
打赏
举报
回复
一个函数指针就想调用所有的库函数,这不可能。
不过你可以先声明几种格式的函数指针,然后分别调用对应格式的库函数。
bclife
2009-06-01
打赏
举报
回复
[Quote=引用 3 楼 kingstarer 的回复:]
那你想要别人怎么使用你的函数指针容器里面的元素呢
[/Quote]
其实我就想做一个用户在界面上可以自己添加选择函数
进行不同规模方式的组合形成一个自定义的功能
为了争取最大的自由度 最好不要每个函数都去自己重描述
bclife
2009-06-01
打赏
举报
回复
[Quote=引用 5 楼 hejinjing_tom_com 的回复:]
引用楼主 bclife 的帖子:
我这有个函数指针容器fun[i]--》指向一个库函数
这些库函数的参数个数、数据类型各自不同
那我如何才能用相同的方法去访问这些函数呢?
我现在想到得方法只有再写一个函数 转换传递过来的参数 然后再调用库函数
这个方法要写很多函数 很麻烦 不知道有没有现成的可以用啊
你可以用宏来实现。 用宏可以定义一种代码模型。 将宏写到你的代码里,就会在本地被展开。
由于参数的个数不…
[/Quote]
大概意思明白
但是感觉还是不是很好的解决这个问题
我再想想
maosher
2009-06-01
打赏
举报
回复
用宏吧,就像MFC里的消息映射宏一样
hjjdebug
2009-06-01
打赏
举报
回复
[Quote=引用楼主 bclife 的帖子:]
我这有个函数指针容器fun[i]--》指向一个库函数
这些库函数的参数个数、数据类型各自不同
那我如何才能用相同的方法去访问这些函数呢?
我现在想到得方法只有再写一个函数 转换传递过来的参数 然后再调用库函数
这个方法要写很多函数 很麻烦 不知道有没有现成的可以用啊
[/Quote]
你可以用宏来实现。 用宏可以定义一种代码模型。 将宏写到你的代码里,就会在本地被展开。
由于参数的个数不一样,你需要定义不同参数个数的宏,宏不检查参数类型。
因为你要使用函数指针,所以在宏中需要有声明该指针的语句。
然后要有为该指针赋值的函数或语句。 当然是根据你传来的参数(个数或者内容)来初始化。
然后是跳转过去执行库函数(实际是执行库函数调用过程)。
不知道我是否讲明白了。
hofstede
2009-06-01
打赏
举报
回复
这是不可能做到的!
kingstarer
2009-06-01
打赏
举报
回复
那你想要别人怎么使用你的函数指针容器里面的元素呢
bclife
2009-06-01
打赏
举报
回复
[Quote=引用 1 楼 draculamx 的回复:]
试试C++里面的“重载”。。
[/Quote]
那不也还要重写很多函数么
draculamx
2009-06-01
打赏
举报
回复
试试C++里面的“重载”。。
c语言常用
库函数
使用要点,C语言常用
库函数
使用要点.doc
本文介绍了C语言中
库函数
的有效使用
方法
,包括函数名拼写规范、功能分类(数学、字符、字符串等)、
参数
理解与
数据类型
选择,以及根据功能选择合适的函数。通过实例演示,帮助读者学会正确运用
库函数
提升编程效率。
C++常用
库函数
本文介绍了C++中常用的
库函数
,包括数学函数、字符串处理函数以及其他实用函数。覆盖了数学运算、字符串操作和文件I/O等多个方面,是C++编程的基础知识点。
gdbus 常用数据结构与
库函数
本文围绕 GDBus 展开,介绍其常用数据结构和
库函数
。常用数据结构主要通过 GVariant 表示,支持基础和复杂
数据类型
,还给出创建和使用示例。常用
库函数
涵盖建立连接、注册对象、创建代理对象等操作,用于 D-Bus 连接管理、
方法
调用、信号处理等。
php printf 不确定
个数
参数
知乎,C++ 不定
个数
参数
写法
本文介绍了三种在C语言中实现不定
个数
参数
函数的
方法
,包括已知具体
数据类型
的直接处理方式、使用va_start等宏进行
参数
遍历,以及利用Boost::format库进行更安全的格式化字符串操作。
java sscanf_C
库函数
本文详细介绍了C
库函数
sscanf()的功能和使用
方法
,包括其
参数
、返回值及示例程序。sscanf()用于从字符串读取格式化输入,支持多种
数据类型
的读取。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章