当前位置: C语言 -- 附录 -- constraint_handler_t

constraint_handler_t类型


描述:

constraint_handler_t类型定义如下所示:

typedef void (*constraint_handler_t)(
     const char * restrict msg, 
     void * restrict ptr, 
     errno_t error);

其中:

msg -- 指向描述运行约束冲突字符串的指针。

ptr -- 空指针或者指向实现定义对象的指针。

error -- 如果调用运行约束处理程序的安全函数的返回类型是errno_t,参数error是安全函数的返回值;否则参数error为传递的errno_t类型的正值。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
/*类型constraint_handler_t范例*/

#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>
#include <stdlib.h>

void runtimeConstraintHandler(const char *msg, void *ptr, errno_t error)
{
    printf_s("Runtime constraint violation: %s\n", msg);
    printf_s("Error code: %d\n", error);
}

int main(void)
{
    constraint_handler_t prevHandler = set_constraint_handler_s(runtimeConstraintHandler);

    FILE *pFile;
    char *mode = NULL;
    fopen_s(&pFile, "gch.txt", mode);  //运行约束:mode不能为空指针。
    fclose(pFile);
    
    set_constraint_handler_s(prevHandler);
    
    /*其它代码。*/

    return 0;
}


结果:

注:测试时Visual Studio软件还未支持constraint_handler_t类型以及set_constraint_handler_s函数,以上例子仅供参考。


相关内容:
set_constraint_handler_s 设置运行约束处理程序的安全函数。