【发布时间】:2011-06-28 08:02:04
【问题描述】:
如果用户输入超过 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() 如何在内部调用/调用处理程序?我问这个是因为我想在我的程序中做类似的事情。例如。假设我有一个声明为类似的函数-
编辑:
如果在运行上述代码时用户输入超过 4 个字符,则调用处理程序。如果我注释掉无效的处理程序相关代码,那么我的程序将崩溃。我想要实现的相同。 如果有人使用我的函数,他应该得到与使用gets_s时相同的行为。请不要暗示这是好是坏。我只是想学习它。gets_s不知道我要设置哪个处理函数。类似地我的函数不知道用户将设置哪个无效的处理函数函数。我认为可能有一些 _invalid_parameter_handler 类型的 C 运行时全局变量,“_set_invalid_parameter_handler()”函数设置了 gets_s 使用的函数。
【问题讨论】:
标签: c error-handling