I get a warning from the gcc compiler and the program aborts if the following code is executed. I could not understand why? It would be very helpful if someone clarified this.
#include<stdio.h> #include<stdarg.h> int f(char c,...); int main() { char c=97,d=98; f(c,d); return 0; } int f(char c,...) { va_list li; va_start(li,c); char d=va_arg(li,char); printf("%c\n",d); va_end(li); }
GCC tells me the following:
warning: 'char' is promoted to 'int' when passed through '...' [enabled by default] note: (so you should pass 'int' not 'char' to 'va_arg') note: if this code is reached, the program will abort
source share