Functions that accept a variable number of arguments are not portable. Although both the ANSI Standard and The C Programming Language specify how to write these functions and how they behave, differences still exist among compiler implementors about how to use variable argument lists.
Many UNIX systems support a standard that differs from the ANSI Standard for variable arguments. Although this may change, it currently presents a portability concern.
Microsoft C run-time libraries and macros allow you to use whichever version of variable argument support you expect to be most portable for your application.