<span style="font-size:18px;">#include <setjmp.h>
#include <signal.h>
#include <sys/types.h>
#include <stdio.h>
#include <string.h>
void exce_handle(int sig);
#define try signal(SIGSEGV, exce_handle);\
if (!sigsetjmp(env, -1))
#define eceptionPrint(format,...)\
do {\
printf("exception !!!!:\n");\
printf("%s%s,%s([%s]:line:%d)\n",__DATE__,__TIME__,__FILE__,__FUNCTION__,__LINE__);\
printf("reason:");\
printf(format,##__VA_ARGS__); \
printf("\n"); \
} while (0)
#define catch else
typedef struct
{
int sig;
char reason[256];
} exception;
static sigjmp_buf env;
static exception e;
void exce_handle(int sig)
{
e.sig = sig;
snprintf(e.reason,256,"The Exception is %d",sig);
siglongjmp(env, -1);
}
int main()
{
int *a = NULL;
try
{
*a = 0;
}
catch
{
eceptionPrint("%s",e.reason);
}
return 0;
}</span>
C语言模拟java、c#使用try catch
最新推荐文章于 2023-09-27 16:00:23 发布