GCC主要数据结构之c_declspecs

来源:互联网 发布:python 数据清洗 框架 编辑:程序博客网 时间:2024/05/24 02:32
/* A sequence of declaration specifiers in C.  When a new declaration   specifier is added, please update the enum c_declspec_word above   accordingly.  */struct c_declspecs {  source_location locations[cdw_number_of_elements];  /* The type specified, if a single type specifier such as a struct,     union or enum specifier, typedef name or typeof specifies the     whole type, or NULL_TREE if none or a keyword such as "void" or     "char" is used.  Does not include qualifiers.  */  tree type;  /* Any expression to be evaluated before the type, from a typeof     specifier.  */  tree expr;  /* The attributes from a typedef decl.  */  tree decl_attr;  /* When parsing, the attributes.  Outside the parser, this will be     NULL; attributes (possibly from multiple lists) will be passed     separately.  */  tree attrs;  /* The base-2 log of the greatest alignment required by an _Alignas     specifier, in bytes, or -1 if no such specifiers with nonzero     alignment.  */  int align_log;  /* For the __intN declspec, this stores the index into the int_n_* arrays.  */  int int_n_idx;  /* The storage class specifier, or csc_none if none.  */  enum c_storage_class storage_class;  /* Any type specifier keyword used such as "int", not reflecting     modifiers such as "short", or cts_none if none.  */  ENUM_BITFIELD (c_typespec_keyword) typespec_word : 8;  /* The kind of type specifier if one has been seen, ctsk_none     otherwise.  */  ENUM_BITFIELD (c_typespec_kind) typespec_kind : 3;  /* Whether any expressions in typeof specifiers may appear in     constant expressions.  */  BOOL_BITFIELD expr_const_operands : 1;  /* Whether any declaration specifiers have been seen at all.  */  BOOL_BITFIELD declspecs_seen_p : 1;  /* Whether something other than a storage class specifier or     attribute has been seen.  This is used to warn for the     obsolescent usage of storage class specifiers other than at the     start of the list.  (Doing this properly would require function     specifiers to be handled separately from storage class     specifiers.)  */  BOOL_BITFIELD non_sc_seen_p : 1;  /* Whether the type is specified by a typedef or typeof name.  */  BOOL_BITFIELD typedef_p : 1;  /* Whether the type is explicitly "signed" or specified by a typedef     whose type is explicitly "signed".  */  BOOL_BITFIELD explicit_signed_p : 1;  /* Whether the specifiers include a deprecated typedef.  */  BOOL_BITFIELD deprecated_p : 1;  /* Whether the type defaulted to "int" because there were no type     specifiers.  */  BOOL_BITFIELD default_int_p : 1;  /* Whether "long" was specified.  */  BOOL_BITFIELD long_p : 1;  /* Whether "long" was specified more than once.  */  BOOL_BITFIELD long_long_p : 1;  /* Whether "short" was specified.  */  BOOL_BITFIELD short_p : 1;  /* Whether "signed" was specified.  */  BOOL_BITFIELD signed_p : 1;  /* Whether "unsigned" was specified.  */  BOOL_BITFIELD unsigned_p : 1;  /* Whether "complex" was specified.  */  BOOL_BITFIELD complex_p : 1;  /* Whether "inline" was specified.  */  BOOL_BITFIELD inline_p : 1;  /* Whether "_Noreturn" was speciied.  */  BOOL_BITFIELD noreturn_p : 1;  /* Whether "__thread" or "_Thread_local" was specified.  */  BOOL_BITFIELD thread_p : 1;  /* Whether "__thread" rather than "_Thread_local" was specified.  */  BOOL_BITFIELD thread_gnu_p : 1;  /* Whether "const" was specified.  */  BOOL_BITFIELD const_p : 1;  /* Whether "volatile" was specified.  */  BOOL_BITFIELD volatile_p : 1;  /* Whether "restrict" was specified.  */  BOOL_BITFIELD restrict_p : 1;  /* Whether "_Atomic" was specified.  */  BOOL_BITFIELD atomic_p : 1;  /* Whether "_Sat" was specified.  */  BOOL_BITFIELD saturating_p : 1;  /* Whether any alignment specifier (even with zero alignment) was     specified.  */  BOOL_BITFIELD alignas_p : 1;  /* The address space that the declaration belongs to.  */  addr_space_t address_space;};
0 0
原创粉丝点击