【发布时间】:2011-12-08 17:23:46
【问题描述】:
我制作了一个小型 C 库,它实现了图论算法并将它们绑定以在 Python 中使用。
我把它发给朋友检查,他告诉我va_list是“危险的”,不能用于这种项目。
所以问题是。在哪些情况下应该使用va_list?
【问题讨论】:
-
如果你需要在 C 语言中接受可变数量参数的函数,你必须使用
va_list——这是唯一的方法。 C 中的变量参数列表函数在某些方面是不安全的,但如果你需要它们,你就需要它们。在不了解您使用它们的目的之前,我无法就它们是否有必要提供任何建议。 -
这是关于 C 库的。您应该删除
c++标记。答案将不合适。 -
如果参数是相同类型或在具有公共基类或接口的类层次结构中,您总是可以只传递一个数组作为参数而不是使用 va_list
-
@pmr 存在 c++ 标签只是因为 va_list 也可以从 c++ 代码访问。
-
@marcushatchenson 是的,但是在 C++(尤其是 C++11)中你会得到不同的答案。
标签: c variadic-functions