CRT, имеющих суффикс _s , и предназначенных для более безопасного использования приёмного буфера с контролем переполнения.
Я только допёр до этого вот сейчас, что они на самом деле являются шаблонными функциями на С++!
Для чистого С! На С++ !
Да блин, как же они это компилируют? Находу переключают режим компиляции с С на С++ и обратно?
(вопрос риторический)
char buf[2048];
va_list vl;
va_start(vl, format);
vsprintf_s(buf, format, vl);
va_end(vl);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(
_Success_(return >= 0)
int, vsprintf_s,
_Post_z_ char, _Buffer,
_In_z_ _Printf_format_string_ char const*, _Format,
va_list, _ArgList
)
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2) \
extern "C++" \
{ \
template <size_t _Size> \
inline \
_ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size], _TType1 _TArg1, _TType2 _TArg2) _CRT_SECURE_CPP_NOTHROW \
{ \
return _FuncName(_Dst, _Size, _TArg1, _TArg2); \
} \
}
чего?
вообще у тебя есть сорцы crt на компе) ищи давай и смотри как сделано
Насколько помню, MSVC не особо любит чистый Си, и я бы не ждал от них строгой конформности стандарту))
Так выше, показал...
Ну, да, кто бы спорил...
ничего, просто прикольно...
ну, если ты пропустил то msvc stl испльзует boost math :)
Обсуждают сегодня