signal.hにおけるマクロ定義SIG_DFLおよびSIG_IGN

1362 ワード

SIG_DFL,SIG_IGNはそれぞれ戻り値のない関数ポインタを表し,ポインタ値はそれぞれ0と1であり,この2つのポインタ値は論理的には実際のプログラムでは不可能な関数アドレス値である.SIG_DFL:デフォルト信号処理プログラムSIG_IGN:信号無視処理プログラム
次に、ポインタ値テストの例を示します.
#include <stdio.h>

#define SIG_DFL ((void(*)(int))0)

#define SIG_IGN ((void(*)(int))1)



int main() {

    int a = (int) SIG_DFL;

    int b = (int) SIG_IGN;



    printf("a = %d/n", a);  //0

    printf("b = %d/n", b);  //1



    return 0;

}

注意:(void(*)()0は、定数0を「戻り値voidの関数へのポインタ」に変換することを示します.