title: What is the point of using va_copy?
body: <p>I read a little about variadic functions in C/C++ and I found a <a href="https://stackoverflow.com/a/10627731">thread</a> that mentions to reuse a va_list in GCC you need to use a copy of it with va_copy and on the same thread they have suggested defining it with </p>
  
  <p><code>#define va_copy(d,s) ((d) = (s))</code> 
  Which means that it is simply assigning the value of va_list s to va_list d.</p>
  
  <p>Wouldn't it be more readable to use <code>va_list ap1 = va_list ap</code> instead? What is the point of creating another function called va_copy?</p>