⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpplib.h

📁 gcc库的原代码,对编程有很大帮助.
💻 H
📖 第 1 页 / 共 2 页
字号:
  char objc;  /* Nonzero means this is an assembly file, and allow     unknown directives, which could be comments.  */  int lang_asm;  /* Nonzero means turn NOTREACHED into #pragma NOTREACHED etc */  char for_lint;  /* Nonzero means handle CHILL comment syntax     and output CHILL string delimiter for __DATE___ etc. */  char chill;  /* Nonzero means copy comments into the output file.  */  char put_out_comments;  /* Nonzero means don't process the ANSI trigraph sequences.  */  char no_trigraphs;  /* Nonzero means print the names of included files rather than     the preprocessed output.  1 means just the #include "...",     2 means #include <...> as well.  */  char print_deps;  /* Nonzero if missing .h files in -M output are assumed to be generated     files and not errors.  */  char print_deps_missing_files;  /* If true, fopen (deps_file, "a") else fopen (deps_file, "w"). */  char print_deps_append;  /* Nonzero means print names of header files (-H).  */  char print_include_names;  /* Nonzero means try to make failure to fit ANSI C an error.  */  char pedantic_errors;  /* Nonzero means don't print warning messages.  -w.  */  char inhibit_warnings;  /* Nonzero means warn if slash-star appears in a comment.  */  char warn_comments;  /* Nonzero means warn if there are any trigraphs.  */  char warn_trigraphs;  /* Nonzero means warn if #import is used.  */  char warn_import;  /* Nonzero means warn if a macro argument is (or would be)     stringified with -traditional.  */  char warn_stringify;  /* Nonzero means turn warnings into errors.  */  char warnings_are_errors;  /* Nonzero causes output not to be done,     but directives such as #define that have side effects     are still obeyed.  */  char no_output;  /* Nonzero means don't output line number information.  */  char no_line_commands;/* Nonzero means output the text in failing conditionals,   inside #failed ... #endfailed.  */  char output_conditionals;  /* Nonzero means -I- has been seen,     so don't look for #include "foo" the source-file directory.  */  char ignore_srcdir;/* Zero means dollar signs are punctuation.   -$ stores 0; -traditional may store 1.  Default is 1 for VMS, 0 otherwise.   This must be 0 for correct processing of this ANSI C program:	#define foo(a) #a	#define lose(b) foo (b)	#define test$	lose (test)	*/  char dollars_in_ident;#ifndef DOLLARS_IN_IDENTIFIERS#define DOLLARS_IN_IDENTIFIERS 1#endif  /* Nonzero means try to imitate old fashioned non-ANSI preprocessor.  */  char traditional;  /* Nonzero means give all the error messages the ANSI standard requires.  */  char pedantic;  char done_initializing;  struct file_name_list *include;	/* First dir to search */  /* First dir to search for <file> */  /* This is the first element to use for #include <...>.     If it is 0, use the entire chain for such includes.  */  struct file_name_list *first_bracket_include;  /* This is the first element in the chain that corresponds to     a directory of system header files.  */  struct file_name_list *first_system_include;  struct file_name_list *last_include;	/* Last in chain */  /* Chain of include directories to put at the end of the other chain.  */  struct file_name_list *after_include;  struct file_name_list *last_after_include;	/* Last in chain */  /* Chain to put at the start of the system include files.  */  struct file_name_list *before_system;  struct file_name_list *last_before_system;	/* Last in chain */  /* Directory prefix that should replace `/usr' in the standard     include file directories.  */  char *include_prefix;  char inhibit_predefs;  char no_standard_includes;  char no_standard_cplusplus_includes;/* dump_only means inhibit output of the preprocessed text             and instead output the definitions of all user-defined             macros in a form suitable for use as input to cccp.   dump_names means pass #define and the macro name through to output.   dump_definitions means pass the whole definition (plus #define) through*/  enum {dump_none = 0, dump_only, dump_names, dump_definitions}     dump_macros;/* Nonzero means pass all #define and #undef directives which we actually   process through to the output stream.  This feature is used primarily   to allow cc1 to record the #defines and #undefs for the sake of   debuggers which understand about preprocessor macros, but it may   also be useful with -E to figure out how symbols are defined, and   where they are defined.  */  int debug_output;  /* Pending -D, -U and -A options, in reverse order. */  struct cpp_pending *pending;  /* File name which deps are being written to.     This is 0 if deps are being written to stdout.  */  char *deps_file;  /* Target-name to write with the dependency information.  */  char *deps_target;};#define CPP_TRADITIONAL(PFILE) (CPP_OPTIONS(PFILE)-> traditional)#define CPP_PEDANTIC(PFILE) (CPP_OPTIONS (PFILE)->pedantic)#define CPP_PRINT_DEPS(PFILE) (CPP_OPTIONS (PFILE)->print_deps)/* Name under which this program was invoked.  */extern char *progname;/* The structure of a node in the hash table.  The hash table   has entries for all tokens defined by #define commands (type T_MACRO),   plus some special tokens like __LINE__ (these each have their own   type, and the appropriate code is run when that type of node is seen.   It does not contain control words like "#define", which are recognized   by a separate piece of code. *//* different flavors of hash nodes --- also used in keyword table */enum node_type { T_DEFINE = 1,	/* the `#define' keyword */ T_INCLUDE,	/* the `#include' keyword */ T_INCLUDE_NEXT, /* the `#include_next' keyword */ T_IMPORT,      /* the `#import' keyword */ T_IFDEF,	/* the `#ifdef' keyword */ T_IFNDEF,	/* the `#ifndef' keyword */ T_IF,		/* the `#if' keyword */ T_ELSE,	/* `#else' */ T_PRAGMA,	/* `#pragma' */ T_ELIF,	/* `#elif' */ T_UNDEF,	/* `#undef' */ T_LINE,	/* `#line' */ T_ERROR,	/* `#error' */ T_WARNING,	/* `#warning' */ T_ENDIF,	/* `#endif' */ T_SCCS,	/* `#sccs', used on system V.  */ T_IDENT,	/* `#ident', used on system V.  */ T_ASSERT,	/* `#assert', taken from system V.  */ T_UNASSERT,	/* `#unassert', taken from system V.  */ T_SPECLINE,	/* special symbol `__LINE__' */ T_DATE,	/* `__DATE__' */ T_FILE,	/* `__FILE__' */ T_BASE_FILE,	/* `__BASE_FILE__' */ T_INCLUDE_LEVEL, /* `__INCLUDE_LEVEL__' */ T_VERSION,	/* `__VERSION__' */ T_SIZE_TYPE,   /* `__SIZE_TYPE__' */ T_PTRDIFF_TYPE,   /* `__PTRDIFF_TYPE__' */ T_WCHAR_TYPE,   /* `__WCHAR_TYPE__' */ T_USER_LABEL_PREFIX_TYPE, /* `__USER_LABEL_PREFIX__' */ T_REGISTER_PREFIX_TYPE,   /* `__REGISTER_PREFIX__' */ T_TIME,	/* `__TIME__' */ T_CONST,	/* Constant value, used by `__STDC__' */ T_MACRO,	/* macro defined by `#define' */ T_DISABLED,	/* macro temporarily turned off for rescan */ T_SPEC_DEFINED, /* special `defined' macro for use in #if statements */ T_PCSTRING,	/* precompiled string (hashval is KEYDEF *) */ T_UNUSED	/* Used for something not defined.  */ };/* Structure returned by create_definition */typedef struct macrodef MACRODEF;struct macrodef{  struct definition *defn;  U_CHAR *symnam;  int symlen;};/* Structure allocated for every #define.  For a simple replacement   such as   	#define foo bar ,   nargs = -1, the `pattern' list is null, and the expansion is just   the replacement text.  Nargs = 0 means a functionlike macro with no args,   e.g.,       #define getchar() getc (stdin) .   When there are args, the expansion is the replacement text with the   args squashed out, and the reflist is a list describing how to   build the output from the input: e.g., "3 chars, then the 1st arg,   then 9 chars, then the 3rd arg, then 0 chars, then the 2nd arg".   The chars here come from the expansion.  Whatever is left of the   expansion after the last arg-occurrence is copied after that arg.   Note that the reflist can be arbitrarily long---   its length depends on the number of times the arguments appear in   the replacement text, not how many args there are.  Example:   #define f(x) x+x+x+x+x+x+x would have replacement text "++++++" and   pattern list     { (0, 1), (1, 1), (1, 1), ..., (1, 1), NULL }   where (x, y) means (nchars, argno). */typedef struct definition DEFINITION;struct definition {  int nargs;  int length;			/* length of expansion string */  int predefined;		/* True if the macro was builtin or */				/* came from the command line */  U_CHAR *expansion;  int line;			/* Line number of definition */  char *file;			/* File of definition */  char rest_args;		/* Nonzero if last arg. absorbs the rest */  struct reflist {    struct reflist *next;    char stringify;		/* nonzero if this arg was preceded by a				   # operator. */    char raw_before;		/* Nonzero if a ## operator before arg. */    char raw_after;		/* Nonzero if a ## operator after arg. */    char rest_args;		/* Nonzero if this arg. absorbs the rest */    int nchars;			/* Number of literal chars to copy before				   this arg occurrence.  */    int argno;			/* Number of arg to substitute (origin-0) */  } *pattern;  union {    /* Names of macro args, concatenated in reverse order       with comma-space between them.       The only use of this is that we warn on redefinition       if this differs between the old and new definitions.  */    U_CHAR *argnames;  } args;};extern U_CHAR is_idchar[256];/* Stack of conditionals currently in progress   (including both successful and failing conditionals).  */struct if_stack {  struct if_stack *next;	/* for chaining to the next stack frame */  char *fname;		/* copied from input when frame is made */  int lineno;			/* similarly */  int if_succeeded;		/* true if a leg of this if-group				    has been passed through rescan */  U_CHAR *control_macro;	/* For #ifndef at start of file,				   this is the macro name tested.  */  enum node_type type;		/* type of last directive seen in this group */};typedef struct if_stack IF_STACK_FRAME;extern void cpp_buf_line_and_col PARAMS((cpp_buffer*, long*, long*));extern cpp_buffer* cpp_file_buffer PARAMS((cpp_reader*));extern void cpp_define PARAMS ((cpp_reader*, U_CHAR*));extern void cpp_error ();extern void cpp_warning ();extern void cpp_pedwarn ();extern void cpp_error_with_line ();extern void cpp_pedwarn_with_line ();extern void cpp_pedwarn_with_file_and_line ();extern void fatal ();extern void cpp_error_from_errno ();extern void cpp_perror_with_name ();extern void cpp_pfatal_with_name ();extern void cpp_grow_buffer PARAMS ((cpp_reader*, long));extern int cpp_parse_escape PARAMS ((cpp_reader*, char**));extern cpp_buffer* cpp_push_buffer PARAMS ((cpp_reader *, U_CHAR*, long));extern cpp_buffer* cpp_pop_buffer PARAMS ((cpp_reader *));extern cpp_hashnode* cpp_lookup PARAMS ((cpp_reader*, const U_CHAR*,					 int, int));#ifdef __cplusplus}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -