I looked in both the Linux and the OpenBSD syslog.h file. The OpenBSD does not list inclusion of the stdarg, so, as the manual page says, you will need to include both, and I do not know why you would not, regardless of what call yuo need to make. The linux one looks like this near the top: #include <features.h> #define __need___va_list #include <stdarg.h> Given that it defines the "need" thing for what I assume is "variable argument" functions, two things I can infer: (a) you, obviously, cannot do without including the stdarg unless you copy the syslog.h to a new location (maybe for testing), and (b) Linux wants to take care of some things for you in case you need va functions, probably for your own good. If we knew what your software actually did, maybe we would look at it.