- 主题:请教:如何把数组传给可变参数的函数。
还有啥 format string?不就是一堆的 %d 吗?
挨个 sprintf 呗。
【 在 Madlee (无竹居士) 的大作中提到: 】
: 比如说有个数组:
: int arr[21] = {1, 2, ,3, 4, ...}
: 现在我构建好了format string,想把他传给 printf,但我不想每次手写21个参数,因为每次要
: 传的参数是不一定的,应该怎么做?类似python 的 *args?
: printf(format_string, *arr)
: 我看到的网上关于可变参数的解释都是怎么解析,好像没看见怎么传参的。
--
FROM 27.38.249.*
你好好想想你的需求,打比方也要打一个真实的才对。
【 在 Madlee (无竹居士) 的大作中提到: 】
: 这只是个栗子,我想知道有没有办法把一堆参数动态的压入栈然后再调用函数。
: 现在网上搜下来的结果好像在ansi C的范围内,是没有可行的解决方案的。
: 不知道有没有高手能指点一下?可能要用点黑客手段。
--
FROM 27.38.249.*
你的需求不清楚。
不要以为学了三天 C 就找到 C 的天花板了,
毕竟你只是个 Python 用户。
【 在 Madlee (无竹居士) 的大作中提到: 】
: 嗯,其实就是想要动态构建va_list,从一个数组转换成一个va_list,
: 但是C本身好像没有这个功能。
--
FROM 27.38.249.*
根本犯不着。这就是一个应用层的问题,
把问题想清楚就解决了。
变参 API 调用多了去了,从来没见过楼主这么犯难心的。
这件事起码有三种以上的解决办法,
也不用什么黑科技,就用最朴素的 strcpy/sprintf 就可以解决的问题。
【 在 adrift (随风飘荡) 的大作中提到: 】
: 如果能确定是什么编译器(甚至确定版本),用内嵌汇编可解,无非就是按照调用惯例构造好待调用函数的参数(寄存器或堆栈)然后发出call指令
--
修改:flw FROM 27.38.249.*
FROM 27.38.249.*