根据我对va_arg
宏的了解,它检索参数列表指向的下一个参数。有什么方法可以选择我想要获取的参数的索引,比如数组索引?
例如,我需要执行一项操作,我需要调用至少 3 次va_arg
宏,但我希望这 3 次检索相同的参数,而不是列表中的下一个参数。一种解决方案可能是使用函数并传递参数,但我不希望这样。
此外,如果没有其他宏能够做到这一点,我如何通过指针引用数组参数的开头?我知道它不是便携式的,也不是类型安全的,等等。只是为了学习。
这是我想如何实现它的示例代码:
bool SQLBase::BindQuery (char* query, int NumArgs, ...)
{
va_list argList;
va_start(argList, NumArgs);
SQLPrepare (hstmt, query, SQL_NTS);
for (int x = 0; x < NumArgs; x++)
{
SQLBindParameter (hstmt, (x+1), GetTypeParameter (va_arg(argList, SQLPOINTER*), SQL_C_CHAR, SQL_CHAR, 10, 0, va_arg(argList, SQLPOINTER*), va_arg(argList, SQLLEN), &recvsize[x]);
}
va_arg 为 SQLBindParameter 函数调用了 3 次,我希望前 2 次指向同一个参数,而不是增加参数列表中的 count 成员。