Ian Lance Taylor wrote:
Antonio Coralles <noche.suapie@xxxxxxxxx <mailto:>> writes:
is there a way to prevent this gcc warning? in a code similar to
void foo(const std::string& format, ...);
i determine the neccessary number of arguments by counting the occurences of "%s" in format, similar to printf. therefore, there is no need for the caller to pass the number of arguments as a second argument.
If you want help, you will need to post a complete test case. Specifically, how are you calling va_start? When you call va_start, you must pass it the last named argument in the function. Any other usage is invalid.
Ian
Here is a test case:
the source looks like this:
void foo(const std::string& format, ...) { unsigned num = string_count("%s", format); // counts how often "%s" occurs in format va_list p_arg; va_start(p_arg, num); for(; num > 0; --num) { const char* arg = va_arg(p_arg, const char*) // ... do something with the acquired string } // ... }
as i said, the function works similar to printf, and in printf there's no second parameter specifying the length of the argument list...
antonio