...
Code Block | ||||
---|---|---|---|---|
| ||||
constraint_handler_t handle_errors(void) { /* Handle runtime-constraint error */ } /*...*/ set_constraint_handler_s(handle_errors); /*...*/ /* Returns zero on success */ errno_t function(char *dst1, size_t size){ char src1[100] = "hello"; if (strcpy_s(dst1, size, src1) != 0) { return -1; } /* ... */ return 0; } |
Compliant Code Example (Visual Studio 2008
...
and later)
Although the ISO/IEC TR 24731-1 functions were created by Microsoft, currently available versions of Microsoft Visual Studio do does not support the same interface defined by the technical report for installing runtime-constraint handlers. Visual Studio calls these functions "invalid parameter handlers," and they are installed by calling the _set_invalid_parameter_handler()
function. The signature of the handler is also significantly different [MSDN].
Code Block | ||||
---|---|---|---|---|
| ||||
_invalid_parameter_handler handle_errors( const wchar_t* expression, const wchar_t* function, const wchar_t* file, unsigned int line, uintptr_t pReserved ) { /* Handle invalid parameter */ } /*...*/ _set_invalid_parameter_handler(handle_errors) /*...*/ errno_t function(char *dst1, size_t size) { char src1[100] = "hello"; if (strcpy_s(dst1, size, src1) != 0) { return -1; } /* ... */ return 0; } |
...