先頭へ戻る

constraint_handler_t | Programming Place Plus C言語編 標準ライブラリのリファレンス

Programming Place Plus トップページ -- C言語編 -- 標準ライブラリのリファレンス(名前順)

Programming Place Plus トップページ -- C言語編 -- 標準ライブラリのリファレンス(ヘッダ別)

先頭へ戻る


constraint_handler_t関数

概要

実行時制約ハンドラの型。

ヘッダ

stdlib.h

形式

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

詳細

実行時制約に違反したときに呼び出される実行時制約ハンドラの型。

set_constraint_handler_s関数によって設定できる。詳細はそちらのページを参照のこと。

注意

Visual Studio 2017 では使用できない。

使用例

// Visual Studio 2017 には、set_constraint_handler_s関数がなく、
// そもそも、実行時制約に関する仕様も異なるため、
// このサンプルプログラムはコンパイルできない。

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

static void my_constraint_handler(const char* restrict msg, void* restrict ptr, errno_t error)
{
    fputs("実行時制約違反が発生: ", stderr);
    fputs(msg, stderr);
    fprintf(stderr, "error code: %d\n", error);

    exit(error);
}

int main(void)
{
    set_constraint_handler_s(my_constraint_handler);

    char s[5];
    if (strcpy_s(s, sizeof(s), "xxxxxxxx") == 0) {
        puts(s);
    }

    return 0;
}

実行結果 (stderr):

(※実行を確認できる環境がないため、一部 * で伏せている)
実行時制約違反が発生: 
******
error code: **

関連

この型に合うように定義された ignore_handler_s関数と、abort_handler_s関数がある。

解説章


参考リンク


更新履歴

'2019/8/27 新規作成。


------------------------------------------------------------------------

標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー