亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cdecl.c

?? guide and some example with visualC++
?? C
?? 第 1 頁 / 共 4 頁
字號:
    {	struct_t * S;	int n;	S = EiC_getInf(type);	n = S->n;	S->n = 1;  /* force initialisation of first member only */		initstruct(type,addr,lev+1);	S->n = n;    }	break;      default:	assign_var(type, *addr,0); break;    }}static void initstruct(type_expr * type, void **addr, int lev){     if(EiC_lexan() == '{' ) {	do_struct(type,addr,lev);	if(lev > 1 && EiC_lexan() != ',')		retractlexan();	EiC_match('}', " }");    } else { 	retractlexan();	if(lev > 0) 	    do_struct(type,addr,lev);	else /* else intializer must be an expression of the same type */	    assign_var(type,*addr,1);    }}static void do_struct(type_expr *type, void **addr,int lev){    struct_t *S;    int i;    S = EiC_getInf(type);    for(i=0;i<S->n;i++) 	if(EiC_lexan() != '}') {	    retractlexan();	    *addr = (char*)*addr + S->offset[i];	    initglobal(S->type[i],addr,lev+1);	    *addr = (char*)*addr - S->offset[i];	    if(EiC_lexan() != ',' && i != S->n-1)		retractlexan();	} else {	    break;	}    retractlexan();}static int dostrlit(void ** addr,int ln, int sln, char * str){    /*      * parse eg. char a[] = "hello world";      * or  char a[5] = "hello world";      */        xmark(str,eicgstring); /* mark for garbage collector */    if(ln) {	if(sln >= ln)	    EiC_warningerror("Array of chars is too long");    } else {	ln = sln+1; /* allow for null at end */	*addr = xrealloc(*addr,ln);    }   if(sln < ln)	memcpy(*addr,str,sln+1);   else       memcpy(*addr,str,ln);	    return ln;}static int initarray(type_expr * type, void ** addr, int size, int lev){    static int INCREMENT;        if(EiC_gettype(type) == t_array) {	int t,tok,s;	if((tok =EiC_lexan()) == '{') {	    t = EiC_get_sizeof(type);	    if(lev == 0) 		INCREMENT = t == 0 ? EiC_get_sizeof(nextType(type)): 0;	    s = do_array(nextType(type),addr,t,lev,INCREMENT);	    if(t == 0) {		int sz = EiC_get_sizeof(nextType(type));		if(sz)		    t = s/sz;		else		    EiC_error("Ilegal array domain in initialisation");		setNumElems(type,t);	    }	    EiC_match('}'," }");	} else if(tok == STR) { /* handle string literals */	    if(EiC_gettype(nextType(type)) == t_char) {		size_t sln;		t = EiC_get_sizeof(type);		sln = (char*)token->Val.p.ep - (char*)token->Val.p.p - 1;		s = dostrlit(addr,t,sln,token->Val.p.p);		if(lev == 0 && t == 0)		    setNumElems(type,s);	    }else		EiC_error("Illegal initialisation");	} else{	    retractlexan();	    if(lev > 0) /* lev indicates a recusive call */		size = do_array(nextType(type),addr,size,lev,INCREMENT);	    else 		EiC_error("missing { in initialisation of an array");	}    } else	initglobal(type,addr,lev+1);    return size;}static int do_array(type_expr *type, void ** addr, int size, int lev, int inc){    int n = 0;    while(EiC_lexan() != '}') {	retractlexan();	if(n >= size) {	    if(inc) {		size += inc;		*addr = xrealloc(*addr, size);		memset((char*)*addr + size - inc, 0, inc);	    } else {		if(size)		    EiC_error("Too many initialisers");		else		    EiC_error("Illegal domain for initialisation");	    }	}	*addr = (char*)*addr + n;	size = initarray(type,addr, size,lev+1);	*addr = (char*)*addr - n;	n += EiC_get_sizeof(type);	if (EiC_lexan() != ',') 	    break;	        }     retractlexan();    return size;}static void assign_var(type_expr *type, void *addr,int allow){    int t;    token_t e1,e2;    void *EiC_getaddress(token_t *);        EiC_inittoken(&e2);    EiC_assign_expr(&e2);#if 0    if(IsTemp(e2.Type))	EiC_clearTempories();#endif        t = EiC_gettype(type);    if (isconst(e2.Type)) {	e1.Type = type;	EiC_castconst(&e2,&e1,0);	switch(t) {	  case t_char:  	  case t_uchar:    *(char*)addr = e2.Val.ival; break;	  case t_short:	  case t_ushort:  *(short*)addr = e2.Val.ival; break;	  case t_int:	  case t_uint:     *(int *)addr = e2.Val.ival; break;	  case t_long:	  case t_ulong:    *(long*)addr = e2.Val.lval; break;	case t_llong:      *(eic_llong*)addr = e2.Val.llval; break;	  case t_float:   *(float*)addr = e2.Val.dval; break;	  case t_double: *(double*)addr = e2.Val.dval; break;	  case t_pointer: 	    if(EiC_S_LEVEL == 1 && EiC_gettype(e2.Type) == t_pointer	       && EiC_gettype(nextType(e2.Type)) == t_char               && !e2.Sym) 		/* got string */		if(e2.Val.p.p)		    EiC_SaveGlobalString(&e2.Val.p);	    if(issafe(type))	       *(ptr_t*)addr = e2.Val.p;	    else	       *(void**)addr = e2.Val.p.p;	    break;	    	  default:	    EiC_error("Unknown initialiserXXX");	}    } else if(allow) {	val_t h;	token_t e3;	EiC_inittoken(&e3);	e3.Type = type;	EiC_output(&e2);	EiC_castvar(&e2,&e3,0);		if (t == t_struct || t == t_union) 	    structUnionCode(E1,&e2);	h = E1->Val;	E1->Val = E1->Sym->val;	EiC_concode(&E1->Code,&e2.Code);	EiC_do_stooutput(E1);	E1->Val = h;    } else {	if(EiC_GI(&e2) != 0)   /* global or static addresses only are allowed */	    EiC_error("Illegal initialization: illegal address operation");	else {	    /*e1.Type = type;*/	    /*EiC_output(&e2);*/	    /*EiC_castvar(&e2,&e1,1);*/	    if(EiC_gettype(type) == t_pointer || 	               (e2.Sym && EiC_gettype(e2.Sym->type) == t_ref)) {		ptr_t p;		p.sp = p.p = EiC_getaddress(&e2);		p.ep = (char*)p.p + EiC_get_sizeof(e2.Type);		if(!EiC_sametypes(e2.Type,type))		    EiC_warningerror("Suspicious pointer conversion");		if(issafe(type))		    *(ptr_t*)addr = p;		else		    *(void**)addr = p.p;		EiC_freecode(&e2.Code);	    } else		EiC_error("Expected constant expression as an"		      " initialiser");	}    }    EiC_freetoken(&e2);}static void decl(token_t * e1, int t){    type_expr *P = NULL;    switch (t) {      case '*':	P = pointer();	dir_decl(e1, EiC_lexan());	if(P)	    e1->Type = EiC_catTypes(P,e1->Type);	break;      case ID:      case '(':	dir_decl(e1, t);	break;      default:	EiC_error("Declarator error");	retractlexan();    }}static type_expr * pointer(void){    type_expr *t = NULL;    do {	t = EiC_addtype(t_pointer,t);	if(EiC_lexan() == constsym || token->Tok == volatilesym) {	    if(token->Tok == constsym) {		setConstp(t);	    }	    /*ignore volatilesym for now*/	    EiC_lexan();	}	/* pointer qualifer */	if(token->Tok == safesym) {	  unsetPtr(t);	  setSafe(t);	  EiC_lexan();	} else  if(token->Tok == unsafesym) {	  unsetPtr(t);	  setUnSafe(t);	  EiC_lexan();	}    } while (token->Tok == '*');    retractlexan();    return t;}static void dir_decl(token_t * e1, int t){    switch (t) {      case '(':	decl(e1, EiC_lexan());	EiC_match(')', " )");	f_dir_decl(e1);	break;	      case ID:	init_ident(e1, EiC_work_tab);	f_dir_decl(e1);	break;	      default:	EiC_error("Direct declarator error");	break;    }}static void f_dir_decl(token_t * e1){    while (1)	switch (EiC_lexan()) {	  case '[':	    array_decl(e1);	    break;	  case '(':	    ff_dir_decl(e1);	    if(INPARMLIST)		EiC_remlevel(EiC_S_LEVEL+1);	    break;	  default:	    retractlexan();	    return;	}}static void ff_dir_decl(token_t * e1){    int h;    switch ((h=EiC_lexan())) {      TYPEQUAL:      STORECLASS:      TYPESPEC:	EiC_S_LEVEL++;	RESET++;	h = LSP;	LSP = EiC_ENV->lsp;	retractlexan();	EiC_make_func(e1);	/*	 * Use INPARMLIST to inform other	 * modules that the following declarations	 * are function parameters.	 */	INPARMLIST++;	PRAMHANDLE = e1->Type;	parm_type_list(EiC_getInf(e1->Type));	/*	 * now pseudo reverse the parameter	 * order.	 */	EiC_reset_env_pointers(e1, LSP);	LSP = h;	RESET--;	INPARMLIST--;	EiC_S_LEVEL--;		break;      case ')':	/*	 * This should really be made illegal, it allows	 * for function declarations with empty	 * paramater list, such as:	 * int f(); Therefore, force an implied t_var argument.	 */    {	type_expr * type;	EiC_make_func(e1);	type = EiC_addtype(t_var,NULL);	EiC_add_func_parm(EiC_getInf(e1->Type), &type, NULL);	EiC_freetype(type);    }	return;      default:	if(h == ID)	    EiC_error("Unknown type '%s': possible "		  "old C type declaration", token->Val.sym->id);	else	    EiC_error("Syntax error");    }    EiC_match(')', " )");}static void UpDateParmSym(type_expr *ty, symentry_t *sym){    if(EiC_gettype(ty) == t_pointer && EiC_gettype(nextType(ty)) ==       t_funcdec)	if(EiC_gettype(sym->type) != t_pointer)	    sym->type = EiC_addtype(t_pointer,sym->type);}static void parm_type_list(func_t * f){    extern int Pclash;    char * name = NULL;    token_t e2;    EiC_inittoken(&e2);    parm_decl(&e2);    /*     * Must watch out for void  as a parameter.     * The void paramater will have no sym entry.     */    if(e2.Val.sym) {	new_var(&e2);#if 1	{	    void EiC_adjustParam(type_expr **type);	    EiC_adjustParam(&e2.Sym->type);	}#endif	name = e2.Sym->id;    } else  /* still must reverse type if needed */	e2.Type = EiC_revtype(e2.Type);    EiC_add_func_parm(f, &e2.Type,name);    if(!e2.Val.sym)	EiC_freetype(e2.Type);    else	UpDateParmSym(getFPty(f,getFNp(f)-1),e2.Val.sym);        if(Pclash)	Pclash = 0;    if (EiC_lexan() == ',')	f_parm_type_list(f);    else	retractlexan();}static void f_parm_type_list(func_t * f){    if (EiC_lexan() == '.') {	if (EiC_lexan() == '.')	    if (EiC_lexan() == '.') {		type_expr *type;		type = EiC_addtype(t_var, NULL);		EiC_add_func_parm(f, &type,NULL);		EiC_freetype(type);		return;	    }	retractlexan();	EiC_error("Expected ...");    } else {	retractlexan();	parm_type_list(f);    }}static void fff_parm_decl(token_t *e1);static void ff_parm_decl(token_t *e1);static void f_parm_decl(token_t * e1);static void parm_decl(token_t * e1){    switch (EiC_lexan()) {      TYPEQUAL:      STORECLASS:      TYPESPEC:	decl_spec(e1);	f_parm_decl(e1);	break;      default:	if(token->Tok == ID)	    EiC_error("Unknown type '%s'",token->Val.sym->id);	else	    EiC_error("Parameter declaration error");    }}static void f_parm_decl(token_t * e1){    if(EiC_lexan() == '*') {	type_expr *P = NULL;	P = pointer();	ff_parm_decl(e1);	if(P)	    e1->Type = EiC_catTypes(P,e1->Type);	    } else {	retractlexan();	ff_parm_decl(e1);    }}static void ff_parm_decl(token_t *e1){    switch(EiC_lexan()) {      case ID: init_ident(e1, EiC_work_tab);	f_dir_decl(e1);	break;      case '(': fff_parm_decl(e1);	break;      case '[': retractlexan();	f_dir_decl(e1);	break;      default: /* null */	if(token->Tok  != ',' && token->Tok != ')')	    EiC_error("Parameter declaration error");	else	    retractlexan();	return ;	    }}static void fff_parm_decl(token_t *e1){    switch(EiC_lexan()) {      TYPEQUAL:      STORECLASS:      TYPESPEC:	retractlexan();	ff_dir_decl(e1);	EiC_remlevel(EiC_S_LEVEL+1);	break;      default:	retractlexan();	f_parm_decl(e1);	EiC_match(')', " ) "); 	break;    }    f_dir_decl(e1);}static void enum_spec(token_t * e1){    e1->Type = EiC_addtype(t_enum, NULL);    f_enum_spec(e1);}static void f_enum_spec(token_t * e1){    int h, t, nxtt;    h = EiC_work_tab;    EiC_work_tab = tag_tab;    switch (EiC_lexan()) {      case ID:			/* enumeration tag */	t = EiC_gettype(token->Val.sym->type);	nxtt = EiC_lexan();	retractlexan();	if (nxtt == '{' || t == ID) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
粉嫩一区二区三区在线看| 欧美岛国在线观看| 三级一区在线视频先锋| 欧美久久免费观看| 夫妻av一区二区| 亚洲精品成a人| 精品国产电影一区二区| 波多野结衣91| 久久电影网电视剧免费观看| 国产精品免费丝袜| 精品久久久网站| 欧美日韩在线精品一区二区三区激情| 麻豆精品国产91久久久久久| 国产欧美精品一区二区色综合朱莉| 欧美中文字幕一区二区三区亚洲| 久久精品99国产精品| 一区二区在线免费| 国产日韩欧美精品一区| 欧美电影免费观看高清完整版在| 91女厕偷拍女厕偷拍高清| 国产精品911| 亚洲与欧洲av电影| 亚洲女与黑人做爰| 1区2区3区精品视频| 久久久久久黄色| 久久久天堂av| 久久日韩精品一区二区五区| 欧美顶级少妇做爰| 欧美大度的电影原声| 欧美日韩不卡一区二区| 欧美日韩久久一区| 欧美一区二区福利视频| 欧美理论片在线| 欧美一级午夜免费电影| 欧美一区二区日韩一区二区| 7777精品伊人久久久大香线蕉| 欧美日韩一区二区在线观看视频| 欧美偷拍一区二区| 欧美成人国产一区二区| 国产精品女同互慰在线看| 综合久久国产九一剧情麻豆| 亚洲mv大片欧洲mv大片精品| 天堂蜜桃一区二区三区| 韩国中文字幕2020精品| av午夜精品一区二区三区| 91极品美女在线| xnxx国产精品| 亚洲高清免费视频| 国产乱码精品一区二区三| 欧洲一区二区三区在线| 欧美成人精品福利| 亚洲精品高清视频在线观看| 蜜桃av一区二区| 91视频.com| 久久久美女毛片| 日韩精品亚洲一区二区三区免费| 国产iv一区二区三区| 91精品国产综合久久婷婷香蕉| 中文字幕在线不卡一区| 国内一区二区在线| 精品欧美一区二区久久 | 日本中文一区二区三区| 91麻豆视频网站| 欧美大度的电影原声| 欧美96一区二区免费视频| 色妞www精品视频| 亚洲欧美日韩在线| 99视频精品在线| 一区二区三区在线不卡| 色哦色哦哦色天天综合| 一区二区三区日韩| 色妞www精品视频| 午夜精品久久久久久久99水蜜桃 | 青青草国产成人av片免费| 欧美日韩免费在线视频| 亚洲综合在线观看视频| 在线视频欧美区| 日韩电影在线观看电影| 欧美精品乱人伦久久久久久| 亚洲国产精品久久人人爱蜜臀| 色哟哟一区二区在线观看| 成人免费一区二区三区在线观看| 色婷婷综合久色| 亚洲成人免费看| 日韩三级中文字幕| 高清国产一区二区| 亚洲三级电影网站| 91精品国产高清一区二区三区蜜臀 | 5858s免费视频成人| 久久精品av麻豆的观看方式| 中文字幕一区二区在线观看| 色综合色狠狠综合色| 日本午夜一区二区| 国产亚洲1区2区3区| 7777女厕盗摄久久久| 成人永久免费视频| 日韩中文欧美在线| 亚洲欧美自拍偷拍色图| 欧美丝袜自拍制服另类| 成人aa视频在线观看| 日韩av中文字幕一区二区三区 | 国产午夜三级一区二区三| 色婷婷精品久久二区二区蜜臂av | 亚洲综合在线视频| 国产精品久久毛片av大全日韩| 欧美日本在线观看| 色哟哟亚洲精品| av电影天堂一区二区在线| 国产一区二区精品在线观看| 日韩不卡免费视频| 日韩精品乱码av一区二区| 亚洲第一综合色| 亚洲一区二区三区四区在线| 亚洲男同性视频| 一级日本不卡的影视| 亚洲三级久久久| 亚洲大片在线观看| 日韩福利电影在线| 老司机精品视频在线| 久久99九九99精品| 成人精品视频.| 色域天天综合网| 91精品午夜视频| 国产精品午夜免费| 午夜亚洲福利老司机| 久久国产综合精品| 成人免费毛片aaaaa**| 欧美最猛性xxxxx直播| 欧美精品一区二区蜜臀亚洲| 亚洲综合一区二区三区| 香蕉久久夜色精品国产使用方法 | 99精品热视频| 欧美一级二级三级蜜桃| 亚洲欧美自拍偷拍色图| 久久国产三级精品| 91浏览器在线视频| 欧美成人艳星乳罩| 亚洲一二三四区不卡| 成人激情动漫在线观看| 欧美美女网站色| 亚洲综合精品久久| 99久久99久久综合| 国产精品久久久久久户外露出| 日韩电影在线一区二区| 在线观看一区不卡| 亚洲人成伊人成综合网小说| 成人精品电影在线观看| 久久久亚洲精华液精华液精华液| 日韩激情视频网站| 欧美日韩视频在线观看一区二区三区| 国产视频一区在线观看| 粉嫩久久99精品久久久久久夜| 日韩免费看网站| 国产制服丝袜一区| 久久久久久黄色| 国产成人亚洲综合a∨婷婷| 国产日产欧美一区二区视频| 国产精品99久久不卡二区| 久久久www成人免费毛片麻豆| 看电视剧不卡顿的网站| 26uuu国产电影一区二区| 国产高清不卡二三区| 国产亚洲成aⅴ人片在线观看| 国产精品77777| 亚洲免费电影在线| 精品久久久久久久久久久久久久久| 菠萝蜜视频在线观看一区| 亚洲无人区一区| 国产欧美一区二区在线| 在线一区二区三区四区| 麻豆成人在线观看| 亚洲日本护士毛茸茸| 欧美一区二区久久久| 在线欧美小视频| 乱中年女人伦av一区二区| 国产精品日产欧美久久久久| 制服丝袜亚洲精品中文字幕| 国产成人在线观看| 激情综合一区二区三区| 亚洲精品成人精品456| 欧美激情一区二区三区四区| 制服丝袜激情欧洲亚洲| 日本久久精品电影| 成人手机电影网| 国产综合久久久久久鬼色| 五月婷婷久久丁香| 一区二区三区 在线观看视频| 国产精品网站在线播放| 日韩无一区二区| 日韩欧美中文字幕制服| 欧美日韩一区三区四区| 欧美日韩高清一区| 91福利资源站| 欧美天堂亚洲电影院在线播放| 99精品视频在线免费观看| 91视频www| 色婷婷综合久久久久中文| 在线观看免费一区| 欧美精品色综合| 日韩欧美中文字幕制服|