不定参数函数指针怎么定义和赋值?

不只是一场梦 2020-04-26 04:50:17
请问各位大佬,函数指针赋值很容易,但是当函数的参数不确定时该怎么赋值?如图是定参数时没问题,但是当函数指针改为不定参数的时候就报错,不能传入,请问能否将一个定参数的函数传给一个不定参数的函数指针?
...全文
329 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
真相重于对错 2020-04-26
  • 打赏
  • 举报
回复
最怕这种半懂不懂的,不懂的人吧,一般会谨慎用词,详细描述,哪怕描述错了,但似乎不会引起你的误解 这种半懂不懂的,本来他想去东北,一个随便用词,就把你支派到南宁。。。。。
双杯献酒 2020-04-26
  • 打赏
  • 举报
回复
函数的参数必须匹配
真相重于对错 2020-04-26
  • 打赏
  • 举报
回复
引用 4 楼 不只是一场梦 的回复:
[quote=引用 3 楼 真相重于对错 的回复:][quote=引用 2 楼 不只是一场梦 的回复:] [quote=引用 1 楼 真相重于对错 的回复:]

typedef void (*func)(int a, ...);	  
void call(int a, ...) {

}
int main() {
	func p;
	p = call;
	p(1, 2);
}
意思是还是要用一个不定参数的函数去初始化吗?不可以直接用一个确定参数的函数去初始化吗?[/quote] 请列出你详细的要求??/[/quote]我想通过LoadLibrary的方式动态加载动态库里面的函数,需要用一个函数指针来接收动态库里的函数,但是动态库有好几个,参数不一样,想弄一个可变参数的函数指针来接收,就不必一一列出可能出现的情况[/quote] 你那个不叫不定参数函数,你那个是不同的函数,不要乱用名词
arfi 2020-04-26
  • 打赏
  • 举报
回复
既然是可变参数,也就是说参数个数不定,你的实现总得知道具体有多少参数。 一种是开始定义一个参数,依靠该参数指定后续参数个数,像printf可以归到这种,只是它靠数第一个参数中格式串的数目。 另外一种,依靠某个用户不可能输入的特殊值判定参数结束(假设实现中不会用到-1,以-1作为参数结束标记) 不管哪种,对于调用者都存在要求,调用者需按规则传递参数。
不只是一场梦 2020-04-26
  • 打赏
  • 举报
回复
引用 3 楼 真相重于对错 的回复:
[quote=引用 2 楼 不只是一场梦 的回复:] [quote=引用 1 楼 真相重于对错 的回复:]

typedef void (*func)(int a, ...);	  
void call(int a, ...) {

}
int main() {
	func p;
	p = call;
	p(1, 2);
}
意思是还是要用一个不定参数的函数去初始化吗?不可以直接用一个确定参数的函数去初始化吗?[/quote] 请列出你详细的要求??/[/quote]我想通过LoadLibrary的方式动态加载动态库里面的函数,需要用一个函数指针来接收动态库里的函数,但是动态库有好几个,参数不一样,想弄一个可变参数的函数指针来接收,就不必一一列出可能出现的情况
真相重于对错 2020-04-26
  • 打赏
  • 举报
回复
引用 2 楼 不只是一场梦 的回复:
[quote=引用 1 楼 真相重于对错 的回复:]

typedef void (*func)(int a, ...);	  
void call(int a, ...) {

}
int main() {
	func p;
	p = call;
	p(1, 2);
}
意思是还是要用一个不定参数的函数去初始化吗?不可以直接用一个确定参数的函数去初始化吗?[/quote] 请列出你详细的要求??/
不只是一场梦 2020-04-26
  • 打赏
  • 举报
回复
引用 1 楼 真相重于对错 的回复:

typedef void (*func)(int a, ...);	  
void call(int a, ...) {

}
int main() {
	func p;
	p = call;
	p(1, 2);
}
意思是还是要用一个不定参数的函数去初始化吗?不可以直接用一个确定参数的函数去初始化吗?
真相重于对错 2020-04-26
  • 打赏
  • 举报
回复

typedef void (*func)(int a, ...);	  
void call(int a, ...) {

}
int main() {
	func p;
	p = call;
	p(1, 2);
}

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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