Re: second parameter of `va_start' not last named argument

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux