⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 signal.c

📁 guide and some example with visualC++
💻 C
字号:
#include <stdlib.h>#include "eic.h"/*#include "signal.h"*/void (*signal(int sig, void (*func)(int a))) (int a);int raise(int sig);/* prototype EiC internal signal handlers */static val_t eic_raise(void){	val_t v;	v.ival = raise(arg(0,getargs(),int));	return v;}extern void EiC_exit_call(int);extern void EiC_bus_err(int);extern void EiC_ill_oper(int);extern void EiC_stor_access(int);extern void EiC_float_err(int);extern void EiC_term_int(int);#define NUM_SIG 32/* SIG_IGN must be last one */static void (*EiC_Cfunc[32])(int) = {    EiC_exit_call,EiC_bus_err,EiC_ill_oper,    EiC_stor_access,EiC_float_err,EiC_term_int,    /*SIG_DFL, SIG_ERR, SIG_IGN,*/};static void  MiddleOne_0(int x0 ){    setArg(0, (void*)EiC_Cfunc[0], int ,x0);    EiC_callBack((void*)EiC_Cfunc[0]);}static void  MiddleOne_1(int x0 ){    setArg(0, (void*)EiC_Cfunc[1], int ,x0);    EiC_callBack((void*)EiC_Cfunc[1]);}static void  MiddleOne_2(int x0 ){    setArg(0, (void*)EiC_Cfunc[2], int ,x0);    EiC_callBack((void*)EiC_Cfunc[2]);}static void  MiddleOne_3(int x0 ){    setArg(0, (void*)EiC_Cfunc[3], int ,x0);    EiC_callBack((void*)EiC_Cfunc[3]);}static void  MiddleOne_4(int x0 ){    setArg(0, (void*)EiC_Cfunc[4], int ,x0);    EiC_callBack((void*)EiC_Cfunc[4]);}static void  MiddleOne_5(int x0 ){    setArg(0, (void*)EiC_Cfunc[5], int ,x0);    EiC_callBack((void*)EiC_Cfunc[5]);}static void  MiddleOne_6(int x0 ){    setArg(0, (void*)EiC_Cfunc[6], int ,x0);    EiC_callBack((void*)EiC_Cfunc[6]);}static void  MiddleOne_7(int x0 ){    setArg(0, (void*)EiC_Cfunc[7], int ,x0);    EiC_callBack((void*)EiC_Cfunc[7]);}static void  MiddleOne_8(int x0 ){    setArg(0, (void*)EiC_Cfunc[8], int ,x0);    EiC_callBack((void*)EiC_Cfunc[8]);}static void  MiddleOne_9(int x0 ){    setArg(0, (void*)EiC_Cfunc[9], int ,x0);    EiC_callBack((void*)EiC_Cfunc[9]);}static void  MiddleOne_10(int x0 ){    setArg(0, (void*)EiC_Cfunc[10], int ,x0);    EiC_callBack((void*)EiC_Cfunc[10]);}static void  MiddleOne_11(int x0 ){    setArg(0, (void*)EiC_Cfunc[11], int ,x0);    EiC_callBack((void*)EiC_Cfunc[11]);}static void  MiddleOne_12(int x0 ){    setArg(0, (void*)EiC_Cfunc[12], int ,x0);    EiC_callBack((void*)EiC_Cfunc[12]);}static void  MiddleOne_13(int x0 ){    setArg(0, (void*)EiC_Cfunc[13], int ,x0);    EiC_callBack((void*)EiC_Cfunc[13]);}static void  MiddleOne_14(int x0 ){    setArg(0, (void*)EiC_Cfunc[14], int ,x0);    EiC_callBack((void*)EiC_Cfunc[14]);}static void  MiddleOne_15(int x0 ){    setArg(0, (void*)EiC_Cfunc[15], int ,x0);    EiC_callBack((void*)EiC_Cfunc[15]);}static void  MiddleOne_16(int x0 ){    setArg(0, (void*)EiC_Cfunc[16], int ,x0);    EiC_callBack((void*)EiC_Cfunc[16]);}static void  MiddleOne_17(int x0 ){    setArg(0, (void*)EiC_Cfunc[17], int ,x0);    EiC_callBack((void*)EiC_Cfunc[17]);}static void  MiddleOne_18(int x0 ){    setArg(0, (void*)EiC_Cfunc[18], int ,x0);    EiC_callBack((void*)EiC_Cfunc[18]);}static void  MiddleOne_19(int x0 ){    setArg(0, (void*)EiC_Cfunc[19], int ,x0);    EiC_callBack((void*)EiC_Cfunc[19]);}static void  MiddleOne_20(int x0 ){    setArg(0, (void*)EiC_Cfunc[20], int ,x0);    EiC_callBack((void*)EiC_Cfunc[20]);}static void  MiddleOne_21(int x0 ){    setArg(0, (void*)EiC_Cfunc[21], int ,x0);    EiC_callBack((void*)EiC_Cfunc[21]);}static void  MiddleOne_22(int x0 ){    setArg(0, (void*)EiC_Cfunc[22], int ,x0);    EiC_callBack((void*)EiC_Cfunc[22]);}static void  MiddleOne_23(int x0 ){    setArg(0, (void*)EiC_Cfunc[23], int ,x0);    EiC_callBack((void*)EiC_Cfunc[23]);}static void  MiddleOne_24(int x0 ){    setArg(0, (void*)EiC_Cfunc[24], int ,x0);    EiC_callBack((void*)EiC_Cfunc[24]);}static void  MiddleOne_25(int x0 ){    setArg(0, (void*)EiC_Cfunc[25], int ,x0);    EiC_callBack((void*)EiC_Cfunc[25]);}static void  MiddleOne_26(int x0 ){    setArg(0, (void*)EiC_Cfunc[26], int ,x0);    EiC_callBack((void*)EiC_Cfunc[26]);}static void  MiddleOne_27(int x0 ){    setArg(0, (void*)EiC_Cfunc[27], int ,x0);    EiC_callBack((void*)EiC_Cfunc[27]);}static void  MiddleOne_28(int x0 ){    setArg(0, (void*)EiC_Cfunc[28], int ,x0);    EiC_callBack((void*)EiC_Cfunc[28]);}static void  MiddleOne_29(int x0 ){    setArg(0, (void*)EiC_Cfunc[29], int ,x0);    EiC_callBack((void*)EiC_Cfunc[29]);}static void  MiddleOne_30(int x0 ){    setArg(0, (void*)EiC_Cfunc[30], int ,x0);    EiC_callBack((void*)EiC_Cfunc[30]);}static void  MiddleOne_31(int x0 ){    setArg(0, (void*)EiC_Cfunc[31], int ,x0);    EiC_callBack((void*)EiC_Cfunc[31]);}static void (*middle[NUM_SIG])(int) = {MiddleOne_0,MiddleOne_1,MiddleOne_2,MiddleOne_3,MiddleOne_4,MiddleOne_5,MiddleOne_6,MiddleOne_7,MiddleOne_8,MiddleOne_9,MiddleOne_10,MiddleOne_11,MiddleOne_12,MiddleOne_13,MiddleOne_14,MiddleOne_15,MiddleOne_16,MiddleOne_17,MiddleOne_18,MiddleOne_19,MiddleOne_20,MiddleOne_21,MiddleOne_22,MiddleOne_23,MiddleOne_24,MiddleOne_25,MiddleOne_26,MiddleOne_27,MiddleOne_28,MiddleOne_29,MiddleOne_30,MiddleOne_31,};static int used;static int nb;static val_t eic_signal(void){	val_t v;	int i;	code_t *c;		void (*func)(int);	func = (void(*)(int))arg(1,getargs(),ptr_t).p;	c = arg(1,getargs(),ptr_t).p;	for(i=0;i<NUM_SIG;++i)	    if(func == EiC_Cfunc[i])		break;	if(i==NUM_SIG && (long)func > 1) {	    i = nb++;	    nb %=NUM_SIG;	    EiC_Cfunc[i] = func;	}	if(i<used || (long)func <= 1)	    func = signal(arg(0,getargs(),int),func);	else	    func = signal(arg(0,getargs(),int),middle[i]);	/* look for return func */	for(i=0;i<NUM_SIG;++i)	    if(func == middle[i])		break;	if(i==NUM_SIG || (i < used || (long)func <= 1))	    v.p.sp = v.p.p = v.p.ep = (void*)func;	else {	    c = (code_t*)EiC_Cfunc[i];	    if(c)		v.p.sp = v.p.p = v.p.ep = c->parent;	    else		v.p.sp = v.p.p = v.p.ep = c;	}	return v;}/**********************************/void module_signal(){     for(used=0;used<NUM_SIG;++used)	if(EiC_Cfunc[used] != NULL) 	    break;     nb = used;    EiC_add_builtinfunc("raise",eic_raise);    EiC_add_builtinfunc("signal",eic_signal);}/**********************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -