【发布时间】:2019-08-11 02:33:26
【问题描述】:
在可变参数函数的函数 va_arg 中,第二个参数只是“类型”。使用此函数时,示例会传递类似“int”的内容。如何在自己的函数中传递和使用类型?例如,如果我想 malloc 一块内存,以便使用括号 [] 将使用正确的偏移量到用户指定的内容,有没有办法做到这一点?
【问题讨论】:
-
va_arg不是一个函数,而是一个宏,这通常是所有这些事情的完成方式。它们通常不是一个好主意,除非您有非常具体的理由想要这样做,并且对语言有清晰的理解以确切地知道您在做什么。 -
我不明白你最后一句话的意思。您能否添加一个具体示例来说明您希望能够做什么?
-
如果我 malloc 一个块,无论我将指针投射到什么位置,都将指示内存中的偏移量,如 [1] 或 [2] 返回的位置。如果我希望用户能够传递要使用的类型或字节数,有没有办法使用括号计算内存中的偏移量,或者是使用指针算法的唯一方法?
-
@nevets 使用括号 is 指针算术。
A[B]完全等同于*(A + B)。
标签: c variadic-functions variadic variadic-macros