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

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

?? decl.c

?? 非常好的源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
		t = '*';
		goto restart;
	case STDCALL:
		t = gettok();
		*attributes = STDCALLATTRIBUTE;
		goto restart;
	case '(':
		t = gettok();
		if (t == STDCALL) {
			t = gettok();
			*attributes = STDCALLATTRIBUTE;
		}
		else if (t == DLLIMPORT) {
			t = '*';
			*attributes = DLLIMPORTATTRIBUTE;
		}
		if (abstract
				&& (t == REGISTER || istypename(t, tsym) || t == ')')) {
			Symbol *args;
			ty = tnode(FUNCTION, ty);
			enterscope();
			if (level > PARAM)
				enterscope();
			args = parameters(ty);
			exitparams(args);
		}
		else {
			ty = dclr1(id, params, abstract, attributes);
			expect(')');
			if (abstract && ty == NULL
					&& (id == NULL || *id == NULL))
				return tnode(FUNCTION, NULL);
		} break;
	case '[':
		break;
	default:
		return ty;
	}
	while (t == '(' || t == '[')
		switch (t) {
		case '(':
			t = gettok(); {
				Symbol *args;
				ty = tnode(FUNCTION, ty);
				enterscope();
				if (level > PARAM)
					enterscope();
				args = parameters(ty);
				if (params && *params == NULL)
					*params = args;
				else
					exitparams(args);
			}
			break;
		case '[':
			t = gettok(); {
				int n = 0;
				if (kind[t] == ID) {
					n = intexpr(']', 1);
					if (n <= 0) {
						error(StrTab[323], n);// <`%d' is an illegal array size\n>
						n = 1;
					}
				}
				else
					expect(']');
				ty = tnode(ARRAY, ty);
				ty->size = n;
			} break;
		default:
			assert(0);
		}
	return ty;
}
static Symbol *parameters(Type fty)
{
	List list = NULL;
	Symbol *params;
	int callAttributes, dummy;
	Type tmpType;

	if (kind[t] == STATIC || istypename(t, tsym)) {
		int n = 0;
		Type ty1 = NULL;
		for (;;) {
			Type ty;
			int sclass = 0;
			char *id = NULL;
			if (ty1 && t == ELLIPSIS) {
				static struct symbol sentinel;
				if (sentinel.type == NULL) {
					sentinel.type = voidtype;
					sentinel.defined = 1;
				}
				if (ty1 == voidtype)
					error(StrTab[324]);// <illegal formal parameter types\n>
				list = append(&sentinel, list);
				t = gettok();
				break;
			}
			if (!istypename(t, tsym) && t != REGISTER)
				error(StrTab[325]);// <missing parameter type\n>
			n++;
			tmpType = specifier(&sclass, NULL, &dummy,&dummy);
			ty = dclr(tmpType, &id, NULL, 1, &callAttributes);
			if (ty == voidtype && (ty1 || id)
					|| ty1 == voidtype)
				error(StrTab[326]);// <illegal formal parameter types\n>
			if (id == NULL)
				id = stringd(n);
			if (ty != voidtype)
				list = append(dclparam(sclass, id, ty, &src,callAttributes), list);
			if (Aflag >= 1 && !hasproto(ty))
				warning(StrTab[327]);// <missing prototype\n>
			if (ty1 == NULL)
				ty1 = ty;
			if (t != ',')
				break;
			t = gettok();
		}
		fty->u.f.proto = newarray(length(list) + 1,
								sizeof(Type *), PERM);
		params = ltov(&list, FUNC);
		for (n = 0; params[n]; n++)
			fty->u.f.proto[n] = params[n]->type;
		fty->u.f.proto[n] = NULL;
		fty->u.f.oldstyle = 0;
	}
	else {
		if (t == ID)
			for (;;) {
				Symbol p;

				if (t != ID) {
					error(StrTab[328]);// <expecting an identifier\n>
					break;
				}
				p = dclparam(0, token, inttype, &src,callAttributes);
				p->defined = 0;
				list = append(p, list);
				t = gettok();
				if (t != ',')
					break;
				t = gettok();
			}
		params = ltov(&list, FUNC);
		fty->u.f.proto = NULL;
		fty->u.f.oldstyle = 1;
	}
	if (t != ')') {
		static char stop[] = {CHAR, STATIC, IF, ')', 0};
		expect(')');
		skipto('{', stop);
	}
	if (t == ')')
		t = gettok();
	return params;
}
static void exitparams(Symbol params[])
{
	assert(params);
	if (params[0] && !params[0]->defined)
		error(StrTab[329]);// <extraneous old-style parameter list\n>
	if (level > PARAM)
		exitscope();
	exitscope();
}

static Symbol dclparam(int sclass, char *id, Type ty, Coordinate * pos,int callAttributes)
{
	Symbol p;

	if (isfunc(ty))
		ty = ptr(ty);
	else if (isarray(ty))
		ty = atop(ty);
	if (sclass == 0)
		sclass = AUTO;
	else if (sclass != REGISTER) {
		error(StrTab[330],// <invalid storage class `%k' for `%t%s\n>
			sclass, ty, stringf(id ? " %s'" : StrTab[331], id));// <' parameter>
		sclass = AUTO;
	}
	else if (isvolatile(ty) || isstruct(ty)) {
		warning(StrTab[332],// <register declaration ignored for `%t%s\n>
				ty, stringf(id ? " %s'" : StrTab[333], id));// <' parameter>
		sclass = AUTO;
	}

	p = lookup(id, identifiers);
	if (p && p->scope == level)
		error(StrTab[334], id, &p->src);// <duplicate declaration for `%s' previously declared at %w\n>

	else
		p = install(id, &identifiers, level, FUNC);
	p->sclass = sclass;
	p->src = *pos;
	p->type = ty;
	p->defined = 1;
	if (t == '=') {
		error(StrTab[335], id);// <illegal initialization for parameter `%s'\n>
		t = gettok();
		(void) expr1(0);
	}
	return p;
}
static Type structdcl(int op)
{
	char *tag;
	Type ty;
	Symbol p;
	Coordinate pos;

	t = gettok();
	pos = src;
	if (t == ID) {
		tag = token;
		t = gettok();
	}
	else
		tag = "";
	if (t == '{') {
		static char stop[] = {IF, ',', 0};
		ty = newstruct(op, tag);
		ty->u.sym->src = pos;
		ty->u.sym->defined = 1;
		t = gettok();
		if (istypename(t, tsym))
			fields(ty);
		else
			error(StrTab[336], op);// <invalid %k field declarations\n>
		test('}', stop);
	}
	else if (*tag && (p = lookup(tag, types)) != NULL
			&& p->type->op == op) {
		ty = p->type;
		if (t == ';' && p->scope < level)
			ty = newstruct(op, tag);
	}
	else {
		if (*tag == 0)
			error(StrTab[337], op);// <missing %k tag\n>
		ty = newstruct(op, tag);
	}
	if (*tag && xref)
		use(ty->u.sym, pos);
	return ty;
}
static void fields(Type ty)
{
	{
		int n = 0;
		int callAttributes;
		int dummy;

		while (istypename(t, tsym)) {
			static char stop[] = {IF, CHAR, '}', 0};
			Type ty1 = specifier(NULL, NULL, &callAttributes,&dummy);
			for (;;) {
				Field p;
				char *id = NULL;

				Type fty = dclr(ty1, &id, NULL, 0, &dummy);
				p = newfield(id, ty, fty);
				if (Aflag >= 1 && !hasproto(p->type)) {
					if (id)
						warning(StrTab[338], id);// <missing prototype for %s\n>
					else
						warning(StrTab[339]);// <missing prototype\n>
				}
				if (t == ':') {
					if (unqual(p->type) != inttype
							&& unqual(p->type) != unsignedtype) {
						if (unqual(p->type) != unsignedshort
								&& unqual(p->type) != unsignedlong)
							error(StrTab[340],// <`%t' is an illegal bit-field type\n>
								p->type);
						else if (Aflag > 1)
							warning(StrTab[341], p->type);// <promoting %t to int\n>
						p->type = inttype;
					}
					t = gettok();
					p->bitsize = (short)intexpr(0, 0);
					if (p->bitsize > 8 * inttype->size || p->bitsize < 0) {
						error(StrTab[342],// <`%d' is an illegal bit-field size\n>
							p->bitsize);
						p->bitsize = (short)(8 * inttype->size);
					}
					else if (p->bitsize == 0 && id) {
						warning(StrTab[343], p->type, id);// <extraneous 0-width bit field `%t %s' ignored\n>

						p->name = stringd(genlabel(1));
					}
					p->lsb = 1;
				}
				else if (id == NULL && Xflag && isstruct(p->type)) {
					if (Aflag >= 2)
						warning(StrTab[344], ty);// <non-ANSI unnamed substructure in `%t'\n>
					if (p->type->size == 0)
						error(StrTab[345], p->type);// <undefined size for field `%t'\n>
					p->name = NULL;
					break;
				}
				else {
					if (id == 0 && isstruct(p->type)) {
						if (Aflag >= 2)
							warning(StrTab[346]);// <non-ANSI unnamed substructure\n>
						if (p->type->size == 0)
							error(StrTab[347],p->type);// <undefined size for field '%t'\n>
						p->name = 0;
						break;
					}
					else if (isfunc(p->type))
						error(StrTab[348], p->type);// <`%t' is an illegal field type\n>
					else if (p->type->size == 0) {

						warning(StrTab[349], p->type, id);// <undefined size for field `%t %s'\n>
						p->type->size = p->type->align;
					}
				}
				if (isconst(p->type))
					ty->u.sym->u.s.cfields = 1;
				if (isvolatile(p->type))
					ty->u.sym->u.s.vfields = 1;
				if (dummy) {
					if (fty->op == POINTER) {
						if (fty->type->op != FUNCTION)
							error(StrTab[350]);// <incorrect _stdcall usage>
						else
							fty->type->u.f.isStdCall = 1;
					}
					else
						fty->u.f.isStdCall = 1;
				}
				n++;
				if (Aflag >= 2 && n == 128)
					warning(StrTab[351], ty);// <more than 127 fields in `%t'\n>
				if (t != ',')
					break;
				t = gettok();
			}
			test(';', stop);
		}
	}
	{
		int bits = 0, off = 0, overflow = 0;
		Field p, *q = &ty->u.sym->u.s.flist;
		ty->align = IR->structmetric.align;
		for (p = *q; p; p = p->link) {
			int a = p->type->align ? p->type->align : 1;
			if (a > DefaultAlignment) a = DefaultAlignment;
			if (p->lsb)
				a = unsignedtype->align;
			if (ty->op == UNION)
				off = bits = 0;
			else if (p->bitsize == 0 || bits == 0
					|| bits - 1 + p->bitsize > 8 * unsignedtype->size) {
				off = add(off, bits2bytes(bits - 1));
				bits = 0;
				chkoverflow(off, a - 1);
				off = roundup(off, a);
			}
			if (a > ty->align)
				ty->align = a;
			p->offset = off;

			if (p->lsb) {
				if (bits == 0)
					bits = 1;
				if (IR->little_endian)
					p->lsb = (short)bits;
				else
					p->lsb = (short)(8 * unsignedtype->size - bits + 1 - p->bitsize + 1);
				bits += p->bitsize;
			}
			else
				off = add(off, p->type->size);
			if (off + bits2bytes(bits - 1) > ty->size)
				ty->size = off + bits2bytes(bits - 1);
			if (p->name == NULL
					|| !('1' <= *p->name && *p->name <= '9')) {
				*q = p;
				q = &p->link;
			}
		}
		*q = NULL;
		chkoverflow(ty->size, ty->align - 1);
		ty->size = roundup(ty->size, ty->align);
		if (overflow) {
			error(StrTab[352], ty, INT_MAX);// <size of `%t' exceeds %d bytes\n>
			ty->size = INT_MAX & (~(ty->align - 1));
		}
		if (Xflag)
			checkfields(ty);
	}
}
static void funcdefn(int sclass, char *id, Type ty, Symbol params[], Coordinate pt, int callAttributes)
{
	int i, n;
	Symbol *callee, *caller, p;
	Type rty = freturn(ty);
	Code cp;

	if (isstruct(rty) && rty->size == 0)
		error(StrTab[353], rty);// <illegal use of incomplete type `%t'\n>
	memset(&FunctionInfo,0,sizeof(FunctionInfo));
	StatementCount = 1;
	hasAllocA = 0;
	for (n = 0; params[n]; n++);
	if (n > 0 && params[n - 1]->name == NULL)
		params[--n] = NULL;
	if (Aflag >= 2 && n > 31)
		warning(StrTab[354], id);// <more than 31 parameters in function `%s'\n>
	for (i=0; i<n;i++) {
		params[i]->firstuse = StatementCount;
		params[i]->x.isArgument = 1;
	}
	StatementCount++;
	FunctionNodes = 0;
	if (ty->u.f.oldstyle) {
		if (Aflag >= 1)
			warning(StrTab[429],id); // <old style function definition for %s\n>
		caller = params;
		callee = newarray(n + 1, sizeof *callee, FUNC);
		memcpy(callee, caller, (n + 1) * sizeof *callee);
		enterscope();
		assert(level == PARAM);
		while (kind[t] == STATIC || istypename(t, tsym))
			decl(dclparam);
		foreach(identifiers, PARAM, oldparam, callee);

		for (i = 0; (p = callee[i]) != NULL; i++) {
			if (!p->defined)
				callee[i] = dclparam(0, p->name, inttype, &p->src,0);
			*caller[i] = *p;
			caller[i]->sclass = AUTO;
			if (unqual(p->type) == floattype)
				caller[i]->type = doubletype;
			else
				caller[i]->type = promote(p->type);
		}
		p = lookup(id, identifiers);
		if (p && p->scope == GLOBAL && isfunc(p->type)
				&& p->type->u.f.proto) {
			Type *proto = p->type->u.f.proto;
			for (i = 0; caller[i] && proto[i]; i++) {
				Type ty = unqual(proto[i]);
				if (eqtype(isenum(ty) ? ty->type : ty,
						unqual(caller[i]->type), 1) == 0)
					break;
			}
			if (proto[i] || caller[i])
				error(StrTab[355], id);// <conflicting argument declarations for function `%s'\n>

		}
		else {
			Type *proto = newarray(n + 1, sizeof *proto, PERM);
			if (Aflag >= 1)
				warning(StrTab[356], id);// <missing prototype for `%s'\n>
			for (i = 0; i < n; i++)
				proto[i] = caller[i]->type;
			proto[i] = NULL;
			ty = func(rty, proto, 1);
		}
		for (i=0; i < n; i++) {
			callee[i]->x.isArgument = 1;
		}
	}
	else {
		callee = params;
		caller = newarray(n + 1, sizeof *caller, FUNC);
		for (i = 0; (p = callee[i]) != NULL && p->name; i++) {
			NEW(caller[i], FUNC);
			*caller[i] = *p;
			caller[i]->type = promote(p->type);
			caller[i]->sclass = AUTO;
			if ('1' <= *p->name && *p->name <= '9')
				error(StrTab[357], i + 1, id);// <missing name for parameter %d to function `%s'\n>

		}
		caller[i] = NULL;
	}
	for (i = 0; (p = callee[i]) != NULL; i++)
		if (p->type->size == 0) {
			error(StrTab[358],// <undefined size for parameter `%t %s'\n>
				p->type, p->name);
			caller[i]->type = p->type = inttype;
		}
	if (Aflag >= 1 && sclass != STATIC && strcmp(id, "main") == 0) {
		if (ty->u.f.oldstyle)
                warning(StrTab[430], rty, id); // <`%t %s()' is a non-ANSI definition\n>
        else if (!(rty == inttype
                && (n == 0 && callee[0] == NULL
                ||  n == 2 && callee[0]->type == inttype
                && isptr(callee[1]->type) && callee[1]->type->type == ptr(chartype)
                && !variadic(ty))))
                warning(StrTab[431], typestring(ty, id)); // <`%s' is a non-ANSI definition\n>
	}
	p = lookup(id, identifiers);
	if (p && isfunc(p->type) && p->defined)
		error(StrTab[359],// <redefinition of `%s' previously defined at %w\n>
			p->name, &p->src);
	cfunc = dclglobal(sclass, id, ty, &pt, callAttributes);
	cfunc->u.f.label = genlabel(1);
	cfunc->u.f.callee = callee;
	cfunc->u.f.pt = src;
	cfunc->defined = 1;
	cfunc->Flags = (unsigned char)callAttributes;
	if (xref)
		use(cfunc, cfunc->src);
	if (Pflag)
		printproto(cfunc, cfunc->u.f.callee);
	if (ncalled >= 0)
		ncalled = findfunc(cfunc->name, pt.file);
	labels = table(NULL, LABELS);
	stmtlabs = table(NULL, LABELS);
	refinc = (float) 1.0;
	regcount = 0;
	codelist = &codehead;
	codelist->next = NULL;
	definept(NULL,POINT_STARTFN);
	if (!IR->wants_callb && isstruct(rty))

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲大尺度视频在线观看| 国产一区二区在线看| 精品伦理精品一区| 一本大道久久a久久综合婷婷| 天天操天天干天天综合网| 亚洲欧美自拍偷拍色图| 欧美成人三级电影在线| 日本高清不卡aⅴ免费网站| 国产一区在线精品| 青娱乐精品视频在线| 亚洲一区二区三区四区不卡| 久久嫩草精品久久久精品一| 欧美一区二区在线视频| 色综合天天综合给合国产| 国产精品一区免费视频| 久久国产尿小便嘘嘘| 亚洲最新视频在线播放| 国产精品全国免费观看高清| 2017欧美狠狠色| 日韩亚洲电影在线| 欧美精品777| 欧美日韩成人在线| 欧美在线观看视频在线| 一本久久综合亚洲鲁鲁五月天| 成人免费毛片a| 国产·精品毛片| 国产乱码字幕精品高清av| 久久精品国产成人一区二区三区| 亚洲电影第三页| 一区二区三区av电影| 一区二区三区高清| 一卡二卡三卡日韩欧美| 日韩码欧中文字| 亚洲手机成人高清视频| 亚洲三级在线观看| 亚洲欧美国产三级| 亚洲精品视频自拍| 一区二区三区免费网站| 亚洲一区国产视频| 性久久久久久久久久久久| 亚洲影院理伦片| 亚洲成人1区2区| 日韩在线播放一区二区| 日韩高清欧美激情| 日本一区中文字幕 | 一区二区三区日韩精品视频| 亚洲精品日日夜夜| 亚洲一区二区影院| 日韩激情一二三区| 日本v片在线高清不卡在线观看| 蜜臀久久99精品久久久久久9| 久久91精品久久久久久秒播| 精品午夜久久福利影院| 国产精品99久久不卡二区| 不卡高清视频专区| 日本韩国欧美一区| 555www色欧美视频| 精品久久久久久久久久久久久久久 | 美腿丝袜亚洲色图| 国产一区二区在线看| 99免费精品在线观看| 欧美日韩一区二区电影| 欧美丰满少妇xxxxx高潮对白| 日韩精品一区二区在线| 日本一区二区在线不卡| 一区二区三区.www| 久久国产成人午夜av影院| 福利91精品一区二区三区| 91伊人久久大香线蕉| 777欧美精品| 亚洲香蕉伊在人在线观| 青青草91视频| 成人中文字幕在线| 欧美欧美午夜aⅴ在线观看| 日韩精品一区二区在线观看| 中文字幕乱码久久午夜不卡 | 国产精品高潮呻吟| 亚洲成人免费看| 国产精品一区二区三区网站| 色综合 综合色| 欧美一区二区女人| 国产精品色婷婷久久58| 丝袜美腿亚洲综合| 成人免费视频caoporn| 制服丝袜亚洲播放| 欧美国产亚洲另类动漫| 婷婷六月综合亚洲| 97久久超碰国产精品| 日韩精品综合一本久道在线视频| 久久久久久久久99精品| 亚洲精品国产精品乱码不99| 韩国午夜理伦三级不卡影院| 欧美午夜精品一区二区蜜桃| 久久久久国产精品麻豆| 亚洲一级二级在线| 成人高清视频在线观看| 欧美一区二区精品在线| 亚洲精品中文字幕在线观看| 国产一区二区三区高清播放| 欧美日韩一区视频| 亚洲日本乱码在线观看| 国产一区二区三区四区五区入口| 欧美色图天堂网| 国产精品国产馆在线真实露脸| 久久aⅴ国产欧美74aaa| 欧美午夜电影网| 国产精品家庭影院| 国产一区 二区 三区一级| 7777精品伊人久久久大香线蕉| √…a在线天堂一区| 国产成人亚洲综合色影视| 日韩一区二区精品葵司在线| 亚洲综合精品自拍| 色综合天天综合色综合av| 欧美国产精品劲爆| 激情六月婷婷久久| 欧美男男青年gay1069videost| 亚洲女与黑人做爰| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 欧美在线观看一二区| 国产喂奶挤奶一区二区三区| 美女www一区二区| 91精品国产欧美一区二区成人| 亚洲精品亚洲人成人网 | 日韩无一区二区| 亚洲成人动漫在线免费观看| 在线看国产一区| 亚洲激情图片一区| 日本高清不卡视频| 日本vs亚洲vs韩国一区三区二区 | 欧美一区二区三区婷婷月色| 亚洲国产日产av| 欧美三级日本三级少妇99| 亚洲午夜精品网| 日本精品免费观看高清观看| 亚洲激情中文1区| 在线观看不卡一区| 亚洲国产综合91精品麻豆| 色婷婷av一区二区三区软件| 亚洲另类中文字| 在线观看视频一区二区欧美日韩| 亚洲人成7777| 在线日韩av片| 午夜精品久久久久久久蜜桃app| 欧美猛男gaygay网站| 性感美女久久精品| 91精品国产手机| 精品一区二区成人精品| 久久久久国产精品免费免费搜索| 国产91精品一区二区麻豆网站 | 日韩一区二区中文字幕| 美女免费视频一区二区| 欧美精品一区二区三区视频| 国产福利精品一区| 亚洲欧美偷拍卡通变态| 欧美日韩一级片在线观看| 免费观看一级特黄欧美大片| 日韩视频免费观看高清在线视频| 国内欧美视频一区二区| 国产精品久久久久久户外露出| 91丝袜高跟美女视频| 图片区小说区区亚洲影院| 日韩美女视频一区二区在线观看| 国产成a人无v码亚洲福利| 亚洲欧美色图小说| 91精品国产综合久久小美女| 国产一区二区三区香蕉| 综合欧美一区二区三区| 91精品国产91综合久久蜜臀| 国产精品一区一区三区| 亚洲最快最全在线视频| 日韩欧美区一区二| 91在线播放网址| 久久精品噜噜噜成人av农村| 亚洲国产成人在线| 久久久久久久久99精品| 色综合久久中文字幕综合网| 男男视频亚洲欧美| |精品福利一区二区三区| 欧美一区二区三区男人的天堂| 成人蜜臀av电影| 日本午夜一本久久久综合| 中文在线免费一区三区高中清不卡| 欧美性xxxxx极品少妇| 国产另类ts人妖一区二区| 亚洲影视资源网| 日本一二三不卡| 日韩欧美成人激情| 色诱亚洲精品久久久久久| 久久不见久久见免费视频1| 亚洲女同ⅹxx女同tv| 精品国产网站在线观看| 在线观看国产日韩| 国产suv精品一区二区三区| 日本人妖一区二区| 樱花影视一区二区| 中文字幕av一区二区三区| 日韩欧美在线123| 欧美在线观看你懂的| 成人污视频在线观看|