Я использовал следующий код для вызова недопустимого обработчика параметров, если пользователь вводит более 4 символов. На самом деле это функция gets_s()
, которая вызывает обработчик.
...
char arr[5];
_invalid_parameter_handler newHandler;
newHandler = myInvalidParameterHandler;
_set_invalid_parameter_handler(newHandler);
gets_s(arr,4);
...
}
void myInvalidParameterHandler(const wchar_t* expression,const wchar_t* function,
const wchar_t* file,
unsigned int line,
uintptr_t pReserved)
{
...
}
Теперь мой вопрос заключается в том, как gets_s () вызывает / вызывает обработчик внутри себя? Я спрашиваю об этом, потому что я хочу сделать что-то подобное в моей программе. Например. скажем, у меня есть функция, объявленная как-
EDIT:
Если при выполнении вышеуказанного кода пользователь вводит более 4 символов, то вызывается обработчик. Если я закомментирую неверный код, связанный с обработчиком, моя программа завершится сбоем. То же самое, чего я хочу добиться.
Если кто-то использует мою функцию, он должен вести себя так же, как и я при использовании gets_s.Пожалуйста, не предполагайте, хорошо это или плохо. Я просто хочу узнать, что это .gets_s не знает, какую функцию обработчика я собираюсь установить. моя функция не знает, какой недопустимый func-обработчик установит пользователь. Я думаю, что может быть какая-то глобальная переменная времени выполнения C типа _invalid_parameter_handler, которую устанавливает функция _set_invalid_parameter_handler (), которую использует gets_s.