如何从 c/c++ 中的以下函数获取所有参数?
以下是我的方法函数的实现,
static VALUE myMethod(VALUE self, VALUE exc, const char* fmt, ...) {
// Need to get all the arguments passed to this function and print it
}
调用方式如下:
myMethod(exception, ""Exception message: %s, Exception object %d",
"Hi from Exception", 100);
您能否提供 myMethod()
的代码,该代码将访问所有参数并将其打印出来。
提前致谢。
following is the implementation of my method
static VALUE myMethod(VALUE self, VALUE exc, const char* fmt, ...) {
// Need to get all the arguments passed to this function and print it
}
function is called as follows:
myMethod(exception, ""Exception message: %s, Exception object %d",
"Hi from Exception", 100);
Can you provide the code for myMethod()
that will access all the arguments and print them out.
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
va_start 和 va_arg 宏用于获取函数中的变量参数。
可以在 Microsoft 网站上找到示例: http ://msdn.microsoft.com/en-us/library/kb57fad8(v=vs.71).aspx
在你的情况下,这有点棘手,因为你需要解析格式字符串以准确了解应给出多少个参数以及它们的类型。幸运的是,CRT 包含一个用于此目的的函数。 vfprintf 函数可以被赋予一个 va_list (从 va_start 获得)。 vfprintf 将使用这个来处理所有额外的参数。请参阅http://www.cplusplus.com/reference/clibrary/cstdio/vfprintf/< /a> 为例。
The va_start and va_arg macro's are used to get the variable arguments in a function.
An example can be found on the Microsoft site: http://msdn.microsoft.com/en-us/library/kb57fad8(v=vs.71).aspx
In your case it's a bit trickier, since you need to parse the format string to exactly know how many arguments should be given and of which type they are. Luckily, the CRT contains a function for that. The vfprintf function can be given a va_list (which you get from va_start). vfprintf will use this one to process all the extra arguments. See http://www.cplusplus.com/reference/clibrary/cstdio/vfprintf/ for an example.
一种方法是使用 vsnprintf()。
示例代码:
One way is to use vsnprintf().
Sample code:
您需要使用 va_start 和 va_arg 宏来获取参数。
你可以看看这个 - 它有一些例子。
http://www.go4expert.com/forums/showthread.php?t=17592
You need to use va_start and va_arg macros to get the arguments.
You can take a look at this - it has some examples.
http://www.go4expert.com/forums/showthread.php?t=17592