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

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

?? c-decl.c

?? 這是完整的gcc源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
  return decl;}/* Return zero if the declaration NEWDECL is valid   when the declaration OLDDECL (assumed to be for the same name)   has already been seen.   Otherwise return an error message format string with a %s   where the identifier should go.  */static char *redeclaration_error_message (newdecl, olddecl)     tree newdecl, olddecl;{  if (TREE_CODE (newdecl) == TYPE_DECL)    {      if (flag_traditional && TREE_TYPE (newdecl) == TREE_TYPE (olddecl))	return 0;      return "redefinition of `%s'";    }  else if (TREE_CODE (newdecl) == FUNCTION_DECL)    {      /* Declarations of functions can insist on internal linkage	 but they can't be inconsistent with internal linkage,	 so there can be no error on that account.	 However defining the same name twice is no good.  */      if (DECL_INITIAL (olddecl) != 0 && DECL_INITIAL (newdecl) != 0	  /* However, defining once as extern inline and a second	     time in another way is ok.  */	  && !(TREE_INLINE (olddecl) && TREE_EXTERNAL (olddecl)	       && !(TREE_INLINE (newdecl) && TREE_EXTERNAL (newdecl))))	return "redefinition of `%s'";      return 0;    }  else if (current_binding_level == global_binding_level)    {      /* Objects declared at top level:  */      /* If at least one is a reference, it's ok.  */      if (TREE_EXTERNAL (newdecl) || TREE_EXTERNAL (olddecl))	return 0;      /* Reject two definitions.  */      if (DECL_INITIAL (olddecl) != 0 && DECL_INITIAL (newdecl) != 0)	return "redefinition of `%s'";      /* Now we have two tentative defs, or one tentative and one real def.  */      /* Insist that the linkage match.  */      if (TREE_PUBLIC (olddecl) != TREE_PUBLIC (newdecl))	return "conflicting declarations of `%s'";      return 0;    }  else    {      /* Objects declared with block scope:  */      /* Reject two definitions, and reject a definition	 together with an external reference.  */       if (!(TREE_EXTERNAL (newdecl) && TREE_EXTERNAL (olddecl)))	return "redeclaration of `%s'";      return 0;    }}/* Get the LABEL_DECL corresponding to identifier ID as a label.   Create one if none exists so far for the current function.   This function is called for both label definitions and label references.  */treelookup_label (id)     tree id;{  register tree decl = IDENTIFIER_LABEL_VALUE (id);  if (decl != 0)    return decl;  decl = build_decl (LABEL_DECL, id, NULL_TREE);  DECL_MODE (decl) = VOIDmode;  /* Mark that the label's definition has not been seen.  */  DECL_SOURCE_LINE (decl) = 0;  IDENTIFIER_LABEL_VALUE (id) = decl;  named_labels    = tree_cons (NULL_TREE, decl, named_labels);  return decl;}/* Define a label, specifying the location in the source file.   Return the LABEL_DECL node for the label, if the definition is valid.   Otherwise return 0.  */treedefine_label (filename, line, name)     char *filename;     int line;     tree name;{  tree decl = lookup_label (name);  if (DECL_SOURCE_LINE (decl) != 0)    {      error_with_decl (decl, "duplicate label `%s'");      return 0;    }  else    {      /* Mark label as having been defined.  */      DECL_SOURCE_FILE (decl) = filename;      DECL_SOURCE_LINE (decl) = line;      return decl;    }}/* Return the list of declarations of the current level.   Note that this list is in reverse order unless/until   you nreverse it; and when you do nreverse it, you must   store the result back using `storedecls' or you will lose.  */treegetdecls (){  return current_binding_level->names;}/* Return the list of type-tags (for structs, etc) of the current level.  */treegettags (){  return current_binding_level->tags;}/* Store the list of declarations of the current level.   This is done for the parameter declarations of a function being defined,   after they are modified in the light of any missing parameters.  */static voidstoredecls (decls)     tree decls;{  current_binding_level->names = decls;}/* Similarly, store the list of tags of the current level.  */static voidstoretags (tags)     tree tags;{  current_binding_level->tags = tags;}/* Given NAME, an IDENTIFIER_NODE,   return the structure (or union or enum) definition for that name.   Searches binding levels from BINDING_LEVEL up to the global level.   If THISLEVEL_ONLY is nonzero, searches only the specified context   (but skips any tag-transparent contexts to find one that is   meaningful for tags).   FORM says which kind of type the caller wants;   it is RECORD_TYPE or UNION_TYPE or ENUMERAL_TYPE.   If the wrong kind of type is found, an error is reported.  */static treelookup_tag (form, name, binding_level, thislevel_only)     enum tree_code form;     struct binding_level *binding_level;     tree name;     int thislevel_only;{  register struct binding_level *level;  for (level = binding_level; level; level = level->level_chain)    {      register tree tail;      for (tail = level->tags; tail; tail = TREE_CHAIN (tail))	{	  if (TREE_PURPOSE (tail) == name)	    {	      if (TREE_CODE (TREE_VALUE (tail)) != form)		{		  /* Definition isn't the kind we were looking for.  */		  error ("`%s' defined as wrong kind of tag",			 IDENTIFIER_POINTER (name));		}	      return TREE_VALUE (tail);	    }	}      if (thislevel_only && ! level->tag_transparent)	return NULL_TREE;    }  return NULL_TREE;}/* Given a type, find the tag that was defined for it and return the tag name.   Otherwise return 0.  However, the value can never be 0   in the cases in which this is used.  */static treelookup_tag_reverse (type)     tree type;{  register struct binding_level *level;  for (level = current_binding_level; level; level = level->level_chain)    {      register tree tail;      for (tail = level->tags; tail; tail = TREE_CHAIN (tail))	{	  if (TREE_VALUE (tail) == type)	    return TREE_PURPOSE (tail);	}    }  return NULL_TREE;}/* Look up NAME in the current binding level and its superiors   in the namespace of variables, functions and typedefs.   Return a ..._DECL node of some kind representing its definition,   or return 0 if it is undefined.  */treelookup_name (name)     tree name;{  register tree val;  if (current_binding_level != global_binding_level      && IDENTIFIER_LOCAL_VALUE (name))    val = IDENTIFIER_LOCAL_VALUE (name);  else    val = IDENTIFIER_GLOBAL_VALUE (name);  if (val && TREE_TYPE (val) == error_mark_node)    return error_mark_node;  return val;}/* Similar to `lookup_name' but look only at current binding level.  */static treelookup_name_current_level (name)     tree name;{  register tree t;  if (current_binding_level == global_binding_level)    return IDENTIFIER_GLOBAL_VALUE (name);  if (IDENTIFIER_LOCAL_VALUE (name) == 0)    return 0;  for (t = current_binding_level->names; t; t = TREE_CHAIN (t))    if (DECL_NAME (t) == name)      break;  return t;}/* Create the predefined scalar types of C,   and some nodes representing standard constants (0, 1, (void *)0).   Initialize the global binding level.   Make definitions for built-in primitive functions.  */voidinit_decl_processing (){  register tree endlink;  /* Make identifier nodes long enough for the language-specific slots.  */  set_identifier_size (sizeof (struct lang_identifier));  current_function_decl = NULL;  named_labels = NULL;  current_binding_level = NULL_BINDING_LEVEL;  free_binding_level = NULL_BINDING_LEVEL;  pushlevel (0);	/* make the binding_level structure for global names */  global_binding_level = current_binding_level;  value_identifier = get_identifier ("<value>");  /* Define `int' and `char' first so that dbx will output them first.  */  integer_type_node = make_signed_type (INT_TYPE_SIZE);  pushdecl (build_decl (TYPE_DECL, ridpointers[(int) RID_INT],			integer_type_node));  /* Define `char', which is like either `signed char' or `unsigned char'     but not the same as either.  */  char_type_node =    (flag_signed_char     ? make_signed_type (CHAR_TYPE_SIZE)     : make_unsigned_type (CHAR_TYPE_SIZE));  pushdecl (build_decl (TYPE_DECL, get_identifier ("char"),			char_type_node));  long_integer_type_node = make_signed_type (LONG_TYPE_SIZE);  pushdecl (build_decl (TYPE_DECL, get_identifier ("long int"),			long_integer_type_node));  unsigned_type_node = make_unsigned_type (INT_TYPE_SIZE);  pushdecl (build_decl (TYPE_DECL, get_identifier ("unsigned int"),			unsigned_type_node));  long_unsigned_type_node = make_unsigned_type (LONG_TYPE_SIZE);  pushdecl (build_decl (TYPE_DECL, get_identifier ("long unsigned int"),			long_unsigned_type_node));  /* `unsigned long' or `unsigned int' is the standard type for sizeof.     Traditionally, use a signed type.  */  if (INT_TYPE_SIZE != LONG_TYPE_SIZE)    sizetype = flag_traditional ? long_integer_type_node : long_unsigned_type_node;  else    sizetype = flag_traditional ? integer_type_node : unsigned_type_node;  TREE_TYPE (TYPE_SIZE (integer_type_node)) = sizetype;  TREE_TYPE (TYPE_SIZE (char_type_node)) = sizetype;  TREE_TYPE (TYPE_SIZE (unsigned_type_node)) = sizetype;  TREE_TYPE (TYPE_SIZE (long_unsigned_type_node)) = sizetype;  TREE_TYPE (TYPE_SIZE (long_integer_type_node)) = sizetype;  error_mark_node = make_node (ERROR_MARK);  TREE_TYPE (error_mark_node) = error_mark_node;  short_integer_type_node = make_signed_type (SHORT_TYPE_SIZE);  pushdecl (build_decl (TYPE_DECL, get_identifier ("short int"),			short_integer_type_node));  long_long_integer_type_node = make_signed_type (LONG_LONG_TYPE_SIZE);  pushdecl (build_decl (TYPE_DECL, get_identifier ("long long int"),			long_long_integer_type_node));  short_unsigned_type_node = make_unsigned_type (SHORT_TYPE_SIZE);  pushdecl (build_decl (TYPE_DECL, get_identifier ("short unsigned int"),			short_unsigned_type_node));  long_long_unsigned_type_node = make_unsigned_type (LONG_LONG_TYPE_SIZE);  pushdecl (build_decl (TYPE_DECL, get_identifier ("long long unsigned int"),			long_long_unsigned_type_node));  /* Define both `signed char' and `unsigned char'.  */  signed_char_type_node = make_signed_type (CHAR_TYPE_SIZE);  pushdecl (build_decl (TYPE_DECL, get_identifier ("signed char"),			signed_char_type_node));  unsigned_char_type_node = make_unsigned_type (CHAR_TYPE_SIZE);  pushdecl (build_decl (TYPE_DECL, get_identifier ("unsigned char"),			unsigned_char_type_node));  float_type_node = make_node (REAL_TYPE);  TYPE_PRECISION (float_type_node) = FLOAT_TYPE_SIZE;  pushdecl (build_decl (TYPE_DECL, ridpointers[(int) RID_FLOAT],			float_type_node));  layout_type (float_type_node);  double_type_node = make_node (REAL_TYPE);  TYPE_PRECISION (double_type_node) = DOUBLE_TYPE_SIZE;  pushdecl (build_decl (TYPE_DECL, ridpointers[(int) RID_DOUBLE],			double_type_node));  layout_type (double_type_node);  long_double_type_node = make_node (REAL_TYPE);  TYPE_PRECISION (long_double_type_node) = LONG_DOUBLE_TYPE_SIZE;  pushdecl (build_decl (TYPE_DECL, get_identifier ("long double"),			long_double_type_node));  layout_type (long_double_type_node);  integer_zero_node = build_int_2 (0, 0);  TREE_TYPE (integer_zero_node) = integer_type_node;  integer_one_node = build_int_2 (1, 0);  TREE_TYPE (integer_one_node) = integer_type_node;  size_zero_node = build_int_2 (0, 0);  TREE_TYPE (size_zero_node) = sizetype;  size_one_node = build_int_2 (1, 0);  TREE_TYPE (size_one_node) = sizetype;  void_type_node = make_node (VOID_TYPE);  pushdecl (build_decl (TYPE_DECL,			ridpointers[(int) RID_VOID], void_type_node));  layout_type (void_type_node);	/* Uses integer_zero_node */  null_pointer_node = build_int_2 (0, 0);  TREE_TYPE (null_pointer_node) = build_pointer_type (void_type_node);  layout_type (TREE_TYPE (null_pointer_node));  string_type_node = build_pointer_type (char_type_node);  /* make a type for arrays of 256 characters.     256 is picked randomly because we have a type for integers from 0 to 255.     With luck nothing will ever really depend on the length of this     array type.  */  char_array_type_node    = build_array_type (char_type_node, unsigned_char_type_node);  /* Likewise for arrays of ints.  */  int_array_type_node    = build_array_type (integer_type_node, unsigned_char_type_node);  default_function_type    = build_function_type (integer_type_node, NULL_TREE);  ptr_type_node = build_pointer_type (void_type_node);  endlink = tree_cons (NULL_TREE, void_type_node, NULL_TREE);  double_ftype_double    = build_function_type (double_type_node,			   tree_cons (NULL_TREE, double_type_node, endlink));  double_ftype_double_double    = build_function_type (double_type_node,			   tree_cons (NULL_TREE, double_type_node,				      tree_cons (NULL_TREE,						 double_type_node, endlink)));  int_ftype_int    = build_function_type (integer_type_node,			   tree_cons (NULL_TREE, integer_type_node, endlink));  long_ftype_long    = build_function_type (long_integer_type_node,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本美女一区二区三区视频| 国产精品1024久久| 国产精品中文欧美| 欧美日韩一区二区三区四区| 国产亚洲欧美一级| 日本一区二区综合亚洲| 日韩成人精品在线| av一区二区三区四区| 欧美成人a∨高清免费观看| 一区二区三区欧美亚洲| 国产一区二三区| 日韩一区二区三区在线视频| 亚洲自拍偷拍网站| 99精品欧美一区二区三区综合在线| 日韩视频在线观看一区二区| 午夜私人影院久久久久| 91久久精品一区二区| 中文字幕欧美国产| 处破女av一区二区| 久久综合色婷婷| 久久激情五月激情| 日韩一区二区三区观看| 亚洲成人在线免费| 在线亚洲一区二区| 一区二区激情小说| 色婷婷一区二区三区四区| 国产精品福利影院| 91丨九色porny丨蝌蚪| 亚洲欧洲一区二区三区| 91丨porny丨在线| 国产精品国产精品国产专区不蜜| 粉嫩久久99精品久久久久久夜| 久久久久久一级片| 国产真实乱偷精品视频免| 久久奇米777| 国内精品视频666| 久久精品亚洲精品国产欧美kt∨| 国产精品18久久久久| 国产欧美精品一区aⅴ影院 | 亚洲mv在线观看| 欧美日韩一区二区电影| 日韩成人午夜精品| 亚洲精品一区二区三区精华液| 久久精品二区亚洲w码| 久久嫩草精品久久久久| 粉嫩久久99精品久久久久久夜 | 亚洲18影院在线观看| 4hu四虎永久在线影院成人| 日本成人在线视频网站| 精品精品欲导航| 国产成人免费在线观看| 自拍偷拍国产亚洲| 欧美日韩国产另类一区| 久久国产视频网| 中文字幕的久久| 色国产精品一区在线观看| 天天综合色天天综合色h| 精品国产凹凸成av人网站| 粉嫩13p一区二区三区| 亚洲国产视频一区二区| 精品国产91久久久久久久妲己| 国产成人av电影在线| 一区二区三区在线观看动漫| 欧美一区二区在线免费观看| 国产精品1024| 亚洲地区一二三色| 国产日韩欧美麻豆| 欧美丰满一区二区免费视频| 国产一区二区伦理| 悠悠色在线精品| 欧美精品一区二区三区视频| 色综合久久久久综合| 久久精品国产成人一区二区三区 | 一道本成人在线| 麻豆精品新av中文字幕| 最新热久久免费视频| 欧美精选午夜久久久乱码6080| 福利一区在线观看| 三级精品在线观看| 亚洲色大成网站www久久九九| 日韩一区二区三区视频在线观看| 成人精品高清在线| 日韩1区2区3区| 亚洲精品日日夜夜| 国产日韩欧美精品综合| 日韩欧美专区在线| 欧美性高清videossexo| 成人黄色小视频| 精品一区二区在线视频| 日韩综合小视频| 亚洲私人黄色宅男| 国产性天天综合网| 欧美v日韩v国产v| 欧美精品日韩精品| 日本精品视频一区二区三区| 粉嫩欧美一区二区三区高清影视| 美女视频黄久久| 午夜精品123| 国产一区二区三区四区五区美女| 亚洲一区二区偷拍精品| 中文字幕一区日韩精品欧美| 亚洲精品一区二区三区影院| 日韩欧美综合在线| 宅男在线国产精品| 777午夜精品免费视频| 91国模大尺度私拍在线视频| 99国内精品久久| 成人理论电影网| 国产成人日日夜夜| 丁香激情综合五月| 成人性视频免费网站| 成人av综合在线| av资源站一区| 色婷婷久久一区二区三区麻豆| av不卡在线观看| 99国产一区二区三精品乱码| 91美女在线看| 91福利国产精品| 欧美精品v国产精品v日韩精品| 欧美色图在线观看| 欧美片网站yy| 日韩一二三区不卡| 日韩一级二级三级| 久久综合久久久久88| 久久久久久久久久久久久女国产乱| www国产成人免费观看视频 深夜成人网| 亚洲精品一区二区精华| 国产午夜精品一区二区三区四区| 中文成人综合网| 亚洲欧美韩国综合色| 午夜精品久久久久影视| 久久99九九99精品| 国产精品主播直播| 91一区一区三区| 欧美三级三级三级| 精品少妇一区二区三区在线视频| 久久久激情视频| 中文字幕在线一区二区三区| 一区二区三区高清在线| 偷拍一区二区三区四区| 韩国av一区二区| av一区二区三区在线| 欧美精品久久久久久久多人混战 | 一区二区三区精品| 麻豆国产欧美一区二区三区| 国产精品综合网| 91官网在线免费观看| 日韩三级中文字幕| 中文字幕一区av| 日本不卡不码高清免费观看 | 精东粉嫩av免费一区二区三区| 国产aⅴ综合色| 欧美日韩一级大片网址| 久久精品视频网| 夜夜爽夜夜爽精品视频| 蜜桃传媒麻豆第一区在线观看| 成人午夜在线播放| 欧美一区二区福利在线| 国产精品美日韩| 日本不卡不码高清免费观看| av激情成人网| 久久久综合视频| 婷婷综合在线观看| 91蜜桃免费观看视频| 精品成人一区二区三区四区| 有码一区二区三区| 成人性生交大片免费看在线播放 | 蜜桃视频第一区免费观看| 成人一道本在线| 欧美成人video| 亚洲一区二区三区自拍| 丰满放荡岳乱妇91ww| 欧美一卡二卡三卡四卡| 一区二区三区中文字幕| 国产成人一级电影| 日韩欧美成人一区| 亚洲bt欧美bt精品| 色综合久久久久| 国产精品国产三级国产三级人妇 | 777午夜精品免费视频| 亚洲精品国产一区二区三区四区在线| 激情五月婷婷综合| 69久久夜色精品国产69蝌蚪网 | 国产精品久久久久永久免费观看| 日韩1区2区3区| 欧美情侣在线播放| 香蕉久久一区二区不卡无毒影院 | 99久久久久久99| 国产色一区二区| 国产寡妇亲子伦一区二区| 久久综合九色综合97_久久久| 秋霞国产午夜精品免费视频| 欧美高清www午色夜在线视频| 亚洲午夜电影在线| 欧美亚洲动漫制服丝袜| 亚洲最新视频在线观看| 91麻豆福利精品推荐| 亚洲男人都懂的| 一本色道久久综合亚洲精品按摩| 亚洲视频中文字幕|