#include #include void doit(int, float, unsigned int); void vait(unsigned int, ...); void *ptfn(void *); int main() { float d1 = 1.234; printf("Without threads: \n"); ptfn((void *)&d1); printf("\n"); fflush(stdout); return 0; } void *ptfn(void *x) { char ar[16]; unsigned int decimals = 5; float d = *(float *)x; doit(1, d, decimals); vait(decimals, d); } void doit(int x, float d, unsigned int ui) { char buff[331]; sprintf(buff,"float: %.*f",ui,d); printf("%s\n", buff); } void vait(unsigned int ui, ...) { float d=-10.0; va_list va; va_start(va, ui); printf("float before va_arg: %f\n", d); d = va_arg(va, float); printf("float after va_arg: %f\n", d); va_end(va); doit(1, d, ui); }