Вы не можете использовать args
таким образом, вы должны использовать va_arg
, чтобы получить фактический аргумент.
if(_isnan(va_arg(args,double)))
сделает трюк, но это тебе мало поможет. Вы не можете вывести тип из аргументов. Тип, который вы указываете на va_arg
, должен быть фактическим типом переданного объекта.
И с этим ваш vprintf
вызов также не будет работать, вам нужно "перезапустить" va_list, поскольку va_arg
уже "потребил" один аргумент.