va_start as array
===

According to what i read about **va_arg** macro, it that retrieves the next argument pointed by the argument list. Is there any way to choose the index of the argument i want to get, like an array index?.

For example i need to do an operation where i need to call at least 3 times the **va_arg** macro but i want those 3 times to retrieve the same argument and not the next one on the list. One solution could be using a function and passing the argument, but i dont want that.

Also if there is no other macros able to do this, how can i reference to the start of the array arguments by a pointer? i know its not portable and not type safe, etc, etc. Just for the sake of learning.

Here is an example code of how i want to implement it:

    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), SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 10, 0, va_arg(argList, SQLPOINTER*), va_arg(argList, SQLLEN), &recvsize[x]);
    	}

The va_arg is called 2 times for the SQLBindParameter function and i want those 2 times to point to the same argument, not increasing the count member on the argument list.

Thanks !