📄 cccp.i
字号:
unsigned long sc_traparg_a2; unsigned long sc_fp_trap_pc; unsigned long sc_fp_trigger_sum; unsigned long sc_fp_trigger_inst; };extern sigset_t cantmasksigset;struct sigvec { void (*sv_handler)(); int sv_mask; int sv_flags; }; extern int sigvec();extern int killpg();struct sigstack { char *ss_sp; int ss_onstack; };typedef struct sigaltstack { caddr_t ss_sp; int ss_flags; size_t ss_size; } stack_t;extern int sigblock();extern int sigpause();extern int sigreturn();extern int sigsetmask();extern int sigstack(); extern int siginterrupt();extern int sigaltstack();extern void (*sigset())();extern int sighold();extern int sigrelse();extern int sigignore();extern int sigsendset();extern int sigsend(); void (*ssignal ()) (); int gsignal ();typedef int clockid_t;struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; long __tm_gmtoff; char *__tm_zone;};extern clock_t clock();extern double difftime();extern time_t mktime();extern time_t time();extern char *asctime();extern char *ctime();extern struct tm *gmtime();extern struct tm *localtime();extern size_t strftime();typedef struct timespec { time_t tv_sec; long tv_nsec; } timespec_t;struct itimerspec { struct timespec it_interval; struct timespec it_value; };int clock_gettime();int clock_settime();int clock_getdrift();int clock_setdrift();int timer_create();int timer_delete();int timer_gettime();int timer_settime();int timer_getoverrun();int nanosleep();int clock_getres();extern char *tzname[];extern void tzset();extern long timezone;extern int daylight;extern char *strptime ();extern unsigned char *NLctime(), *NLasctime();extern char *NLstrtime();struct timeval { int tv_sec; int tv_usec; };struct itimerval { struct timeval it_interval; struct timeval it_value; };struct timezone { int tz_minuteswest; int tz_dsttime; };extern int adjtime ();extern int getitimer ();extern int setitimer ();extern int gettimeofday ();extern int settimeofday ();extern int utimes ();typedef struct psx4_timer_struct { long psx4t_idx; long psx4t_tid; struct itimerval psx4t_timeval; volatile unsigned int psx4t_flags; unsigned int psx4t_type:1; unsigned int psx4t_overrun; sigval_t psx4t_value; int psx4t_signo; void *psx4t_p_proc; } psx4_timer_t;typedef struct psx4_tblock_struct { long psx4tb_free; psx4_timer_t psx4_timers[32];} psx4_tblock_t;struct rusage { struct timeval ru_utime; struct timeval ru_stime; long ru_maxrss; long ru_ixrss; long ru_idrss; long ru_isrss; long ru_minflt; long ru_majflt; long ru_nswap; long ru_inblock; long ru_oublock; long ru_msgsnd; long ru_msgrcv; long ru_nsignals; long ru_nvcsw; long ru_nivcsw; };struct rlimit { rlim_t rlim_cur; rlim_t rlim_max; };struct rusage_dev { struct rusage ru_rusage; dev_t ru_dev;};extern int getpriority ();extern int setpriority ();extern int getrlimit ();extern int setrlimit ();extern int getrusage ();extern char *index ();extern char *rindex ();char *xmalloc ();void error ();void warning ();extern char *getenv ();extern FILE *fdopen ();extern char *version_string;extern struct tm *localtime ();extern int sys_nerr;extern char *sys_errlist[];extern int errno;struct directive;struct file_buf;struct arglist;struct argdata;static int do_define ();static int do_line ();static int do_include ();static int do_undef ();static int do_error ();static int do_pragma ();static int do_ident ();static int do_if ();static int do_xifdef ();static int do_else ();static int do_elif ();static int do_endif ();static int do_sccs ();static int do_once ();static int do_assert ();static int do_unassert ();static int do_warning ();static void add_import ();static void append_include_chain ();static void deps_output ();static void make_undef ();static void make_definition ();static void make_assertion ();static void path_include ();static void initialize_builtins ();static void initialize_char_syntax ();static void dump_arg_n ();static void dump_defn_1 ();static void delete_macro ();static void trigraph_pcp ();static void rescan ();static void finclude ();static void validate_else ();static int comp_def_part ();static void error_from_errno ();static void error_with_line ();void pedwarn ();static void pedwarn_with_file_and_line ();static void fatal ();void fancy_abort ();static void pfatal_with_name ();static void perror_with_name ();static void print_containing_files ();static int lookup_import ();static int redundant_include_p ();static is_system_include ();static int check_preconditions ();static void pcfinclude ();static void pcstring_used ();static void write_output ();static int check_macro_name ();static int compare_defs ();static int compare_token_lists ();static int eval_if_expression ();static int discard_comments ();static int delete_newlines ();static int line_for_error ();static int hashf ();static int file_size_and_mode ();static struct arglist *read_token_list ();static void free_token_list ();static struct hashnode *install ();struct hashnode *lookup ();static struct assertion_hashnode *assertion_install ();static struct assertion_hashnode *assertion_lookup ();static char *xrealloc ();static char *xcalloc ();static char *savestring ();static void delete_assertion ();static void macroexpand ();static void dump_all_macros ();static void conditional_skip ();static void skip_if_group ();static void output_line_command ();enum file_change_code {same_file, enter_file, leave_file};static int grow_outbuf ();static int handle_directive ();static void memory_full ();static U_CHAR *macarg1 ();static char *macarg ();static U_CHAR *skip_to_end_of_comment ();static U_CHAR *skip_quoted_string ();static U_CHAR *skip_paren_group ();static char *check_precompiled ();static void dump_single_macro ();static char *progname;static int cplusplus;static int cplusplus_comments;static int objc;static int lang_asm;static int max_include_len;static int lint = 0;static int put_out_comments = 0;static int no_trigraphs = 0;static int print_deps = 0;static int print_include_names = 0;static int no_line_commands;static enum {dump_none, dump_only, dump_names, dump_definitions} dump_macros = dump_none;static int debug_output = 0;static FILE *pcp_outfile;static int pcp_inside_if;static int no_precomp;int pedantic;static int pedantic_errors;static int inhibit_warnings = 0;static int warn_comments;static int warn_stringify;static int warn_trigraphs;static int warn_import = 1;static int warnings_are_errors;int traditional;static int no_output;static int done_initializing = 0;static struct file_buf { char *fname; char *nominal_fname; struct file_name_list *dir; int lineno; int length; U_CHAR *buf; U_CHAR *bufp; struct hashnode *macro; struct if_stack *if_stack; U_CHAR *free_ptr; char system_header_p;} instack[200];static int last_error_tick; static int input_file_stack_tick; static int indepth = -1;static int system_include_depth = 0;typedef struct file_buf FILE_BUF;static FILE_BUF outbuf;struct file_name_list { struct file_name_list *next; char *fname; U_CHAR *control_macro; };static struct default_include { char *fname; int cplusplus; } include_defaults_array[] = { { "/usr", 1}, { "/usr/local/bin", 0}, { "/usr/local/include", 0}, { "/usr/include", 0}, { 0, 0} };static struct default_include *include_defaults = include_defaults_array;static struct file_name_list *include = 0; static struct file_name_list *first_bracket_include = 0;static struct file_name_list *first_system_include = 0;static struct file_name_list *last_include = 0; static struct file_name_list *after_include = 0;static struct file_name_list *last_after_include = 0; static struct file_name_list *dont_repeat_files = 0;static struct file_name_list *all_include_files = 0;static char *include_prefix;static STRINGDEF *stringlist;static STRINGDEF **stringlist_tailp = &stringlist;typedef struct macrodef MACRODEF;struct macrodef{ struct definition *defn; U_CHAR *symnam; int symlen;};static struct macrodef create_definition ();typedef struct definition DEFINITION;struct definition { int nargs; int length; int predefined; U_CHAR *expansion; int line; char *file; char rest_args; struct reflist { struct reflist *next; char stringify; char raw_before; char raw_after; char rest_args; int nchars; int argno; } *pattern; union { U_CHAR *argnames; } args;};union hashval { int ival; char *cpval; DEFINITION *defn; KEYDEF *keydef;};static char rest_extension[] = "...";enum node_type { T_DEFINE = 1, T_INCLUDE, T_INCLUDE_NEXT, T_IMPORT, T_IFDEF, T_IFNDEF, T_IF, T_ELSE, T_PRAGMA, T_ELIF, T_UNDEF, T_LINE, T_ERROR, T_WARNING, T_ENDIF, T_SCCS, T_IDENT, T_ASSERT, T_UNASSERT, T_SPECLINE, T_DATE, T_FILE, T_BASE_FILE, T_INCLUDE_LEVEL, T_VERSION, T_SIZE_TYPE, T_PTRDIFF_TYPE, T_WCHAR_TYPE, T_TIME, T_CONST, T_MACRO, T_DISABLED, T_SPEC_DEFINED, T_PCSTRING, T_UNUSED };struct hashnode { struct hashnode *next; struct hashnode *prev; struct hashnode **bucket_hdr; enum node_type type; int length; U_CHAR *name; union hashval value; };typedef struct hashnode HASHNODE;static HASHNODE *hashtab[1403];static char *predefs = "-Dunix -D__osf__ -D__alpha -D__alpha__ -D_LONGLONG -DSYSTYPE_BSD -D_SYSTYPE_BSD";struct tokenlist_list { struct tokenlist_list *next; struct arglist *tokens;};struct assertion_hashnode { struct assertion_hashnode *next; struct assertion_hashnode *prev; struct assertion_hashnode **bucket_hdr; int length; U_CHAR *name; struct tokenlist_list *value;};typedef struct assertion_hashnode ASSERTION_HASHNODE;static ASSERTION_HASHNODE *assertion_hashtab[37];static int assertions_flag;struct directive { int length; int (*func)(); char *name; enum node_type type; char angle_brackets; char traditional_comments; char pass_thru; };static struct directive directive_table[] = { { 6, do_define, "define", T_DEFINE, 0, 1}, { 2, do_if, "if", T_IF}, { 5, do_xifdef, "ifdef", T_IFDEF}, { 6, do_xifdef, "ifndef", T_IFNDEF}, { 5, do_endif, "endif", T_ENDIF}, { 4, do_else, "else", T_ELSE}, { 4, do_elif, "elif", T_ELIF}, { 4, do_line, "line", T_LINE}, { 7, do_include, "include", T_INCLUDE, 1}, { 12, do_include, "include_next", T_INCLUDE_NEXT, 1}, { 6, do_include, "import", T_IMPORT, 1}, { 5, do_undef, "undef", T_UNDEF}, { 5, do_error, "error", T_ERROR}, { 7, do_warning, "warning", T_WARNING}, { 6, do_pragma, "pragma", T_PRAGMA, 0, 0, 1}, { 5, do_ident, "ident", T_IDENT, 0, 0, 1}, { 6, do_assert, "assert", T_ASSERT}, { 8, do_unassert, "unassert", T_UNASSERT}, { -1, 0, "", T_UNUSED},};U_CHAR *directive_start;U_CHAR is_idchar[256];U_CHAR is_idstart[256];U_CHAR is_hor_space[256];static U_CHAR is_space[256];static int errors = 0; static int dollars_in_ident;static FILE_BUF expand_to_temp_buffer ();static DEFINITION *collect_expansion ();struct if_stack { struct if_stack *next; char *fname; int lineno; int if_succeeded; U_CHAR *control_macro; enum node_type type; };typedef struct if_stack IF_STACK_FRAME;static IF_STACK_FRAME *if_stack = 0L;static char *deps_buffer;static int deps_allocated_size;static int deps_size;static int deps_column;static int ignore_srcdir;intmain (argc, argv) int argc; char **argv;{ int st_mode; long st_size; char *in_fname, *out_fname; char *p; int f, i; FILE_BUF *fp; char **pend_files = (char **) xmalloc (argc * sizeof (char *)); char **pend_defs = (char **) xmalloc (argc * sizeof (char *)); char **pend_undefs = (char **) xmalloc (argc * sizeof (char *)); char **pend_assertions = (char **) xmalloc (argc * sizeof (char *)); char **pend_includes = (char **) xmalloc (argc * sizeof (char *)); char **pend_assertion_options = (char **) xmalloc (argc * sizeof (char *)); int inhibit_predefs = 0; int no_standard_includes = 0; int no_standard_cplusplus_includes = 0; int missing_newline = 0; int inhibit_output = 0; char *deps_file = 0; FILE *deps_stream = 0; char *deps_target = 0; { struct rlimit rlim; getrlimit (3 , &rlim); rlim.rlim_cur = rlim.rlim_max; setrlimit (3 , &rlim); } progname = argv[0];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -