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

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

?? c-decl.c

?? 這是完整的gcc源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* Process declarations and variables for C compiler.   Copyright (C) 1988 Free Software Foundation, Inc.This file is part of GNU CC.GNU CC is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 1, or (at your option)any later version.GNU CC is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU CC; see the file COPYING.  If not, write tothe Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  *//* Process declarations and symbol lookup for C front end.   Also constructs types; the standard scalar types at initialization,   and structure, union, array and enum types when they are declared.  *//* ??? not all decl nodes are given the most useful possible   line numbers.  For example, the CONST_DECLs for enum values.  */#include "config.h"#include "tree.h"#include "flags.h"#include "c-tree.h"#include "c-parse.h"#include <stdio.h>/* In grokdeclarator, distinguish syntactic contexts of declarators.  */enum decl_context{ NORMAL,			/* Ordinary declaration */  FUNCDEF,			/* Function definition */  PARM,				/* Declaration of parm before function body */  FIELD,			/* Declaration inside struct or union */  TYPENAME};			/* Typename (inside cast or sizeof)  */#undef NULL#define NULL 0#define MIN(X,Y) ((X) < (Y) ? (X) : (Y))#define MAX(X,Y) ((X) > (Y) ? (X) : (Y))#ifndef CHAR_TYPE_SIZE#define CHAR_TYPE_SIZE BITS_PER_UNIT#endif#ifndef SHORT_TYPE_SIZE#define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2))#endif#ifndef INT_TYPE_SIZE#define INT_TYPE_SIZE BITS_PER_WORD#endif#ifndef LONG_TYPE_SIZE#define LONG_TYPE_SIZE BITS_PER_WORD#endif#ifndef LONG_LONG_TYPE_SIZE#define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2)#endif#ifndef FLOAT_TYPE_SIZE#define FLOAT_TYPE_SIZE BITS_PER_WORD#endif#ifndef DOUBLE_TYPE_SIZE#define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)#endif#ifndef LONG_DOUBLE_TYPE_SIZE#define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)#endif/* a node which has tree code ERROR_MARK, and whose type is itself.   All erroneous expressions are replaced with this node.  All functions   that accept nodes as arguments should avoid generating error messages   if this node is one of the arguments, since it is undesirable to get   multiple error messages from one error in the input.  */tree error_mark_node;/* INTEGER_TYPE and REAL_TYPE nodes for the standard data types */tree short_integer_type_node;tree integer_type_node;tree long_integer_type_node;tree long_long_integer_type_node;tree short_unsigned_type_node;tree unsigned_type_node;tree long_unsigned_type_node;tree long_long_unsigned_type_node;tree unsigned_char_type_node;tree signed_char_type_node;tree char_type_node;tree float_type_node;tree double_type_node;tree long_double_type_node;/* a VOID_TYPE node.  */tree void_type_node;/* A node for type `void *'.  */tree ptr_type_node;/* A node for type `char *'.  */tree string_type_node;/* Type `char[256]' or something like it.   Used when an array of char is needed and the size is irrelevant.  */tree char_array_type_node;/* Type `int[256]' or something like it.   Used when an array of int needed and the size is irrelevant.  */tree int_array_type_node;/* type `int ()' -- used for implicit declaration of functions.  */tree default_function_type;/* function types `double (double)' and `double (double, double)', etc.  */tree double_ftype_double, double_ftype_double_double;tree int_ftype_int, long_ftype_long;/* Function type `void (void *, void *, int)' and similar ones */tree void_ftype_ptr_ptr_int, int_ftype_ptr_ptr_int, void_ftype_ptr_int_int;/* Two expressions that are constants with value zero.   The first is of type `int', the second of type `void *'.  */tree integer_zero_node;tree null_pointer_node;/* A node for the integer constant 1.  */tree integer_one_node;/* An identifier whose name is <value>.  This is used as the "name"   of the RESULT_DECLs for values of functions.  */tree value_identifier;/* A permanent tree_list whose value slot is the void type.  */static tree void_list_node;/* While defining an enum type, this is 1 plus the last enumerator   constant value.  */static tree enum_next_value;/* Parsing a function declarator leaves a list of parameter names   or a chain or parameter decls here.  */static tree last_function_parms;/* Parsing a function declarator leaves here a chain of structure   and enum types declared in the parmlist.  */static tree last_function_parm_tags;/* After parsing the declarator that starts a function definition,   `start_function' puts here the list of parameter names or chain of decls.   `store_parm_decls' finds it here.  */static tree current_function_parms;/* Similar, for last_function_parm_tags.  */static tree current_function_parm_tags;/* A list (chain of TREE_LIST nodes) of all LABEL_STMTs in the function   that have names.  Here so we can clear out their names' definitions   at the end of the function.  */static tree named_labels;/* The FUNCTION_DECL for the function currently being compiled,   or 0 if between functions.  */tree current_function_decl;/* Set to 0 at beginning of a function definition, set to 1 if   a return statement that specifies a return value is seen.  */int current_function_returns_value;/* Set to 0 at beginning of a function definition, set to 1 if   a return statement with no argument is seen.  */int current_function_returns_null;/* Set to nonzero by `grokdeclarator' for a function   whose return type is defaulted, if warnings for this are desired.  */static int warn_about_return_type;/* Nonzero when starting a function delcared `extern inline'.  */static int current_extern_inline;/* For each binding contour we allocate a binding_level structure * which records the names defined in that contour. * Contours include: *  0) the global one *  1) one for each function definition, *     where internal declarations of the parameters appear. *  2) one for each compound statement, *     to record its declarations. * * The current meaning of a name can be found by searching the levels from * the current one out to the global one. *//* Note that the information in the `names' component of the global contour   is duplicated in the IDENTIFIER_GLOBAL_VALUEs of all identifiers.  */struct binding_level  {    /* A chain of _DECL nodes for all variables, constants, functions,       and typedef types.  These are in the reverse of the order supplied.     */    tree names;    /* A list of structure, union and enum definitions,     * for looking up tag names.     * It is a chain of TREE_LIST nodes, each of whose TREE_PURPOSE is a name,     * or NULL_TREE; and whose TREE_VALUE is a RECORD_TYPE, UNION_TYPE,     * or ENUMERAL_TYPE node.     */    tree tags;    /* For each level, a list of shadowed outer-level local definitions       to be restored when this level is popped.       Each link is a TREE_LIST whose TREE_PURPOSE is an identifier and       whose TREE_VALUE is its old definition (a kind of ..._DECL node).  */    tree shadowed;    /* For each level (except not the global one),       a chain of LET_STMT nodes for all the levels       that were entered and exited one level down.  */    tree blocks;    /* The binding level which this one is contained in (inherits from).  */    struct binding_level *level_chain;    /* Nonzero for the level that holds the parameters of a function.  */    char parm_flag;    /* Nonzero if this level "doesn't exist" for tags.  */    char tag_transparent;    /* Nonzero means make a LET_STMT for this level regardless of all else.  */    char keep;    /* Nonzero means make a LET_STMT if this level has any subblocks.  */    char keep_if_subblocks;    /* Number of decls in `names' that have incomplete        structure or union types.  */    int n_incomplete;  };#define NULL_BINDING_LEVEL (struct binding_level *) NULL  /* The binding level currently in effect.  */static struct binding_level *current_binding_level;/* A chain of binding_level structures awaiting reuse.  */static struct binding_level *free_binding_level;/* The outermost binding level, for names of file scope.   This is created when the compiler is started and exists   through the entire run.  */static struct binding_level *global_binding_level;/* Binding level structures are initialized by copying this one.  */static struct binding_level clear_binding_level  = {NULL, NULL, NULL, NULL, NULL, 0, 0, 0};/* Nonzero means unconditionally make a LET_STMT for the next level pushed.  */static int keep_next_level_flag;/* Nonzero means make a LET_STMT for the next level pushed   if it has subblocks.  */static int keep_next_if_subblocks;/* Forward declarations.  */static tree grokparms (), grokdeclarator ();tree pushdecl ();static void builtin_function ();static tree lookup_tag ();static tree lookup_tag_reverse ();static tree lookup_name_current_level ();static char *redeclaration_error_message ();static void layout_array_type ();/* C-specific option variables.  *//* Nonzero means allow type mismatches in conditional expressions;   just make their values `void'.   */int flag_cond_mismatch;/* Nonzero means don't recognize the keyword `asm'.  */int flag_no_asm;/* Nonzero means do some things the same way PCC does.  */int flag_traditional;/* Nonzero means warn about implicit declarations.  */int warn_implicit;/* Nonzero means warn about function definitions that default the return type   or that use a null return and have a return-type other than void.  */int warn_return_type;/* Nonzero means give string constants the type `const char *'   to get extra warnings from them.  These warnings will be too numerous   to be useful, except in thoroughly ANSIfied programs.  */int warn_write_strings;/* Nonzero means warn about pointer casts that can drop a type qualifier   from the pointer target type.  */int warn_cast_qual;/* Nonzero means warn about sizeof(function) or addition/subtraction   of function pointers.  */int warn_pointer_arith;/* Nonzero means warn for all old-style non-prototype function decls.  */int warn_strict_prototypes;/* Nonzero means `$' can be in an identifier.   See cccp.c for reasons why this breaks some obscure ANSI C programs.  */#ifndef DOLLARS_IN_IDENTIFIERS#define DOLLARS_IN_IDENTIFIERS 0#endifint dollars_in_ident = DOLLARS_IN_IDENTIFIERS;char *language_string = "GNU C";/* Decode the string P as a language-specific option.   Return 1 if it is recognized (and handle it);   return 0 if not recognized.  */   intlang_decode_option (p)     char *p;{  if (!strcmp (p, "-ftraditional") || !strcmp (p, "-traditional"))    flag_traditional = 1, dollars_in_ident = 1, flag_writable_strings = 1;  else if (!strcmp (p, "-fsigned-char"))    flag_signed_char = 1;  else if (!strcmp (p, "-funsigned-char"))    flag_signed_char = 0;  else if (!strcmp (p, "-fno-signed-char"))    flag_signed_char = 0;  else if (!strcmp (p, "-fno-unsigned-char"))    flag_signed_char = 1;  else if (!strcmp (p, "-fshort-enums"))    flag_short_enums = 1;  else if (!strcmp (p, "-fno-short-enums"))    flag_short_enums = 0;  else if (!strcmp (p, "-fcond-mismatch"))    flag_cond_mismatch = 1;  else if (!strcmp (p, "-fno-cond-mismatch"))    flag_cond_mismatch = 0;  else if (!strcmp (p, "-fasm"))    flag_no_asm = 0;  else if (!strcmp (p, "-fno-asm"))    flag_no_asm = 1;  else if (!strcmp (p, "-ansi"))    flag_no_asm = 1, dollars_in_ident = 0;  else if (!strcmp (p, "-Wimplicit"))    warn_implicit = 1;  else if (!strcmp (p, "-Wreturn-type"))    warn_return_type = 1;  else if (!strcmp (p, "-Wwrite-strings"))    warn_write_strings = 1;  else if (!strcmp (p, "-Wcast-qual"))    warn_cast_qual = 1;  else if (!strcmp (p, "-Wpointer-arith"))    warn_pointer_arith = 1;  else if (!strcmp (p, "-Wstrict-prototypes"))

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久一级| 国产精品久久久久久久裸模| 精品一区二区三区在线观看| 欧美挠脚心视频网站| 亚洲r级在线视频| 在线播放91灌醉迷j高跟美女| 视频在线观看一区| 日韩欧美高清一区| 国产成人日日夜夜| 日本一区二区三区高清不卡 | 蜜桃视频在线观看一区二区| 精品日韩一区二区| 粉嫩一区二区三区性色av| 国产精品乱码妇女bbbb| 色婷婷av一区二区| 天堂精品中文字幕在线| 26uuu国产一区二区三区| 国产+成+人+亚洲欧洲自线| 综合久久给合久久狠狠狠97色| 色婷婷亚洲一区二区三区| 亚洲成av人片| 精品久久人人做人人爱| 成人中文字幕合集| 亚洲男人的天堂在线aⅴ视频| 欧美精品国产精品| 国产裸体歌舞团一区二区| 最好看的中文字幕久久| 欧美日韩在线播放一区| 国产一区视频在线看| 国产精品免费久久久久| 欧美日韩国产天堂| 国产成人在线影院 | 日韩av在线播放中文字幕| 久久婷婷色综合| 色综合夜色一区| 蜜臀久久99精品久久久久久9| 国产女人18水真多18精品一级做| 91成人在线精品| 精品一区二区成人精品| 亚洲视频狠狠干| 日韩视频免费观看高清完整版在线观看 | 怡红院av一区二区三区| 日韩免费高清视频| 色综合欧美在线视频区| 裸体歌舞表演一区二区| 亚洲视频免费在线| 2024国产精品| 欧美在线观看视频一区二区| 国产剧情在线观看一区二区| 亚洲一卡二卡三卡四卡| 国产亚洲1区2区3区| 欧美日韩亚洲国产综合| 国产成人精品aa毛片| 亚洲成人免费电影| 欧美高清在线一区二区| 在线播放/欧美激情| 99久久精品免费看国产免费软件| 秋霞午夜鲁丝一区二区老狼| 亚洲欧美另类综合偷拍| 精品成人一区二区三区四区| 日本韩国视频一区二区| 国产精品中文字幕一区二区三区| 午夜视频一区二区三区| 国产精品久久久久久户外露出 | 成人av动漫在线| 免费在线看成人av| 一区二区三区四区亚洲| 中文字幕欧美三区| 日韩欧美久久久| 一本久道久久综合中文字幕| 国产一区二区福利| 日本91福利区| 亚洲午夜一二三区视频| 国产精品麻豆一区二区| 精品国产麻豆免费人成网站| 欧美精品日韩一本| 99精品国产99久久久久久白柏| 国产一区日韩二区欧美三区| 天天av天天翘天天综合网色鬼国产 | 国产精品久久久久毛片软件| 精品美女在线播放| 欧美群妇大交群中文字幕| 色综合中文字幕国产| 成人av集中营| 国产91露脸合集magnet| 久久99精品久久久久久久久久久久 | 成人综合婷婷国产精品久久| 国产在线精品一区二区三区不卡| 日韩经典一区二区| 亚洲成人精品一区| 一区二区三区欧美日| 1024成人网色www| 亚洲国产高清在线| 国产日韩欧美精品综合| 2021中文字幕一区亚洲| 日韩免费观看2025年上映的电影| 91精品免费在线| 欧美日韩成人激情| 欧美日韩久久久| 欧美日韩激情一区二区三区| 91国产视频在线观看| 99re热视频这里只精品| 成人h动漫精品一区二| 福利一区二区在线观看| 国产精品综合二区| 国产精品一区三区| 国产精品18久久久久久久久久久久| 精品无人区卡一卡二卡三乱码免费卡| 免费观看一级特黄欧美大片| 日韩专区中文字幕一区二区| 性做久久久久久免费观看| 亚洲第一综合色| 亚洲在线免费播放| 亚洲高清一区二区三区| 亚洲电影中文字幕在线观看| 亚洲国产综合在线| 三级不卡在线观看| 免费一级片91| 卡一卡二国产精品 | 国产调教视频一区| 欧美国产成人精品| 日韩理论片在线| 亚洲精品美国一| 一级日本不卡的影视| 亚洲一区二区三区国产| 午夜电影网一区| 免费看精品久久片| 国产乱国产乱300精品| 成人影视亚洲图片在线| 91尤物视频在线观看| 99久久久无码国产精品| 欧洲亚洲国产日韩| 欧美疯狂做受xxxx富婆| 日韩一区二区三区三四区视频在线观看| 91精品国产91久久综合桃花 | 久久亚洲二区三区| 国产午夜精品理论片a级大结局| 久久久精品中文字幕麻豆发布| 日本美女视频一区二区| 日本欧美在线观看| 国产一区二三区| 99在线视频精品| a在线播放不卡| 欧美在线观看你懂的| 日韩一区二区三区电影在线观看 | 尤物视频一区二区| 婷婷中文字幕一区三区| 国内精品写真在线观看| 成人性色生活片免费看爆迷你毛片| 99国产精品久久| 欧美三级韩国三级日本一级| 日韩美女视频在线| 欧美激情在线免费观看| 亚洲最快最全在线视频| 日韩电影免费在线观看网站| 国产一区二区三区黄视频 | 在线亚洲人成电影网站色www| 欧美日韩aaa| 久久久av毛片精品| 尤物视频一区二区| 国内久久精品视频| av在线免费不卡| 欧美精品1区2区3区| 国产喷白浆一区二区三区| 亚洲一区在线观看网站| 精品一区精品二区高清| 91美女视频网站| 日韩精品中文字幕在线不卡尤物 | 精品写真视频在线观看 | 99精品久久久久久| 欧美日韩中文字幕一区二区| 久久亚洲精品小早川怜子| 亚洲午夜羞羞片| 高清在线成人网| 欧美丰满嫩嫩电影| 国产精品网站导航| 亚洲电影中文字幕在线观看| 国产精品一区二区果冻传媒| 日本道色综合久久| wwww国产精品欧美| 五月婷婷综合激情| 成人av在线网站| 欧美一区二区在线看| 成人免费一区二区三区视频| 激情综合色综合久久| 欧美性xxxxx极品少妇| 久久久精品国产免费观看同学| 亚洲高清免费在线| 高清不卡一二三区| 日韩欧美一二三区| 伊人性伊人情综合网| 国产精品一级在线| 91精品国产综合久久久久| 综合av第一页| 国产精品69毛片高清亚洲| 欧美精品久久天天躁| 一区二区国产视频| 成人听书哪个软件好| 欧美成人伊人久久综合网| 一区二区免费在线播放|