170 похожих чатов

#_s #MSVC Прикольно! Речь о не(совсем)стандартных функциях С из стандартной библиотеки

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); \
} \
}

8 ответов

19 просмотров

чего?

вообще у тебя есть сорцы crt на компе) ищи давай и смотри как сделано

Насколько помню, MSVC не особо любит чистый Си, и я бы не ждал от них строгой конформности стандарту))

Ilya-Zviagin Автор вопроса
Stanislav Ershov
и шо?

ничего, просто прикольно...

Ilya Zviagin
ничего, просто прикольно...

ну, если ты пропустил то msvc stl испльзует boost math :)

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
5
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта