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

📄 chicken.h

📁 Scheme跨平台编译器
💻 H
📖 第 1 页 / 共 5 页
字号:
# define C_stack_check            if(!C_disable_overflow_check && (C_byte*)(C_stack_pointer) + C_STACK_RESERVE < (C_byte *)C_stack_limit) C_stack_overflow()#else# define C_demand(n)              (C_stress && ((C_word)(C_stack_limit - C_stack_pointer) > (n)))# define C_stack_probe(p)         (C_stress && ((C_word *)(p) < C_stack_limit))# define C_stack_check            if(!C_disable_overflow_check && (C_byte*)(C_stack_pointer) - C_STACK_RESERVE > (C_byte *)C_stack_limit) C_stack_overflow()#endif#define C_zero_length_p(x)        C_mk_bool(C_header_size(x) == 0)#define C_boundp(x)               C_mk_bool(((C_SCHEME_BLOCK *)(x))->data[ 0 ] != C_SCHEME_UNBOUND)#define C_blockp(x)               C_mk_bool(!C_immediatep(x))#define C_forwardedp(x)           C_mk_bool((C_block_header(x) & C_GC_FORWARDING_BIT) != 0)#define C_immp(x)                 C_mk_bool(C_immediatep(x))#define C_flonump(x)              C_mk_bool(C_block_header(x) == C_FLONUM_TAG)#define C_stringp(x)              C_mk_bool(C_header_bits(x) == C_STRING_TYPE)#define C_symbolp(x)              C_mk_bool(C_block_header(x) == C_SYMBOL_TAG)#define C_pairp(x)                C_mk_bool(C_block_header(x) == C_PAIR_TAG)#define C_closurep(x)             C_mk_bool(C_header_bits(x) == C_CLOSURE_TYPE)#define C_vectorp(x)              C_mk_bool(C_header_bits(x) == C_VECTOR_TYPE)#define C_bytevectorp(x)          C_mk_bool(C_header_bits(x) == C_BYTEVECTOR_TYPE)#define C_portp(x)                C_mk_bool(C_header_bits(x) == C_PORT_TYPE)#define C_structurep(x)           C_mk_bool(C_header_bits(x) == C_STRUCTURE_TYPE)#define C_locativep(x)            C_mk_bool(C_block_header(x) == C_LOCATIVE_TAG)#define C_charp(x)                C_mk_bool(((x) & C_IMMEDIATE_TYPE_BITS) == C_CHARACTER_BITS)#define C_booleanp(x)             C_mk_bool(((x) & C_IMMEDIATE_TYPE_BITS) == C_BOOLEAN_BITS)#define C_eofp(x)                 C_mk_bool((x) == C_SCHEME_END_OF_FILE)#define C_undefinedp(x)           C_mk_bool((x) == C_SCHEME_UNDEFINED)#define C_fixnump(x)              C_mk_bool((x) & C_FIXNUM_BIT)#define C_nfixnump(x)             C_mk_nbool((x) & C_FIXNUM_BIT)#define C_pointerp(x)             C_mk_bool(C_block_header(x) == C_POINTER_TAG)#define C_taggedpointerp(x)       C_mk_bool(C_block_header(x) == C_TAGGED_POINTER_TAG)#define C_swigpointerp(x)         C_mk_bool(C_block_header(x) == C_SWIG_POINTER_TAG)#define C_lambdainfop(x)          C_mk_bool(C_header_bits(x) == C_LAMBDA_INFO_TYPE)#define C_anypointerp(x)          C_mk_bool(C_block_header(x) == C_POINTER_TAG || C_block_header(x) == C_TAGGED_POINTER_TAG || C_block_header(x) == C_SWIG_POINTER_TAG)#define C_specialp(x)             C_mk_bool(C_header_bits(x) & C_SPECIALBLOCK_BIT)#define C_byteblockp(x)           C_mk_bool(C_header_bits(x) & C_BYTEBLOCK_BIT)#define C_anyp(x)                 C_SCHEME_TRUE#define C_eqp(x, y)               C_mk_bool((x) == (y))#define C_vemptyp(x)              C_mk_bool(C_header_size(x) == 0)#define C_notvemptyp(x)           C_mk_bool(C_header_size(x) > 0)#define C_slot(x, i)              (((C_SCHEME_BLOCK *)(x))->data[ C_unfix(i) ])#define C_slot0(x)                (((C_SCHEME_BLOCK *)(x))->data[ 0 ])#define C_subbyte(x, i)           C_fix(((C_byte *)((C_SCHEME_BLOCK *)(x))->data)[ C_unfix(i) ] & 0xff)#define C_subchar(x, i)           C_make_character(((C_uchar *)((C_SCHEME_BLOCK *)(x))->data)[ C_unfix(i) ])#define C_setbyte(x, i, n)        (((C_byte *)((C_SCHEME_BLOCK *)(x))->data)[ C_unfix(i) ] = C_unfix(n), C_SCHEME_UNDEFINED)#define C_setsubchar(x, i, n)     (((C_char *)((C_SCHEME_BLOCK *)(x))->data)[ C_unfix(i) ] = C_character_code(n), C_SCHEME_UNDEFINED)#define C_setsubbyte(x, i, n)     (((C_char *)((C_SCHEME_BLOCK *)(x))->data)[ C_unfix(i) ] = C_unfix(n), C_SCHEME_UNDEFINED)#define C_fixnum_times(n1, n2)          (C_fix(C_unfix(n1) * C_unfix(n2)))#define C_u_fixnum_plus(n1, n2)         (((n1) - C_FIXNUM_BIT) + (n2))#define C_fixnum_plus(n1, n2)           (C_u_fixnum_plus(n1, n2) | C_FIXNUM_BIT)#define C_u_fixnum_difference(n1, n2)   ((n1) - (n2) + C_FIXNUM_BIT)#define C_fixnum_difference(n1, n2)     (C_u_fixnum_difference(n1, n2) | C_FIXNUM_BIT)#define C_fixnum_divide(n1, n2)         (C_fix(C_unfix(n1) / C_unfix(n2)))#define C_fixnum_modulo(n1, n2)         (C_fix(C_unfix(n1) % C_unfix(n2)))#define C_u_fixnum_and(n1, n2)          ((n1) & (n2))#define C_fixnum_and(n1, n2)            (C_u_fixnum_and(n1, n2) | C_FIXNUM_BIT)#define C_u_fixnum_or(n1, n2)           ((n1) | (n2))#define C_fixnum_or(n1, n2)             (C_u_fixnum_or(n1, n2) | C_FIXNUM_BIT)#define C_fixnum_xor(n1, n2)            (((n1) ^ (n2)) | C_FIXNUM_BIT)#define C_fixnum_not(n)                 ((~(n)) | C_FIXNUM_BIT)#define C_fixnum_shift_left(n1, n2)     (C_fix(C_unfix(n1) << C_unfix(n2)))#define C_fixnum_shift_right(n1, n2)    (((n1) >> C_unfix(n2)) | C_FIXNUM_BIT)#define C_u_fixnum_negate(n)            (-(n) + 2 * C_FIXNUM_BIT)#define C_fixnum_negate(n)              (C_u_fixnum_negate(n) | C_FIXNUM_BIT)#define C_fixnum_greaterp(n1, n2)       (C_mk_bool((C_word)(n1) > (C_word)(n2)))#define C_fixnum_lessp(n1, n2)          (C_mk_bool((C_word)(n1) < (C_word)(n2)))#define C_fixnum_greater_or_equal_p(n1, n2) (C_mk_bool((C_word)(n1) >= (C_word)(n2)))#define C_fixnum_less_or_equal_p(n1, n2)(C_mk_bool((C_word)(n1) <= (C_word)(n2)))#define C_u_fixnum_increase(n)          ((n) + (1 << C_FIXNUM_SHIFT))#define C_fixnum_increase(n)            (C_u_fixnum_increase(n) | C_FIXNUM_BIT)#define C_u_fixnum_decrease(n)          ((n) - (1 << C_FIXNUM_SHIFT))#define C_fixnum_decrease(n)            (C_u_fixnum_decrease(n) | C_FIXNUM_BIT)#define C_fixnum_abs(n)                 C_fix(abs(C_unfix(n)))#define C_flonum_equalp(n1, n2)         C_mk_bool(C_flonum_magnitude(n1) == C_flonum_magnitude(n2))#define C_flonum_greaterp(n1, n2)       C_mk_bool(C_flonum_magnitude(n1) > C_flonum_magnitude(n2))#define C_flonum_lessp(n1, n2)          C_mk_bool(C_flonum_magnitude(n1) < C_flonum_magnitude(n2))#define C_flonum_greater_or_equal_p(n1, n2) C_mk_bool(C_flonum_magnitude(n1) >= C_flonum_magnitude(n2))#define C_flonum_less_or_equal_p(n1, n2) C_mk_bool(C_flonum_magnitude(n1) <= C_flonum_magnitude(n2))#define C_display_fixnum(p, n)          (C_fprintf(C_port_file(p), C_text("%d"), C_unfix(n)), C_SCHEME_UNDEFINED)#define C_display_char(p, c)            (C_fputc(C_character_code(c), C_port_file(p)), C_SCHEME_UNDEFINED)#define C_display_string(p, s)          (C_fwrite(((C_SCHEME_BLOCK *)(s))->data, sizeof(C_char), C_header_size(s), \                                         C_port_file(p)), C_SCHEME_UNDEFINED)#define C_fix_to_char(x)                (C_make_character(C_unfix(x)))#define C_char_to_fix(x)                (C_fix(C_character_code(x)))#define C_math_result(x)                (C_temporary_flonum = (x), C_SCHEME_UNDEFINED)#define C_substring_copy(s1, s2, start1, end1, start2) \                                        (C_memcpy((C_char *)C_data_pointer(s2) + C_unfix(start2), \                                                  (C_char *)C_data_pointer(s1) + C_unfix(start1), \                                                  C_unfix(end1) - C_unfix(start1) ), C_SCHEME_UNDEFINED)#define C_substring_compare(s1, s2, start1, start2, len) \                                        C_mk_bool(C_memcmp((C_char *)C_data_pointer(s1) + C_unfix(start1), \                                                           (C_char *)C_data_pointer(s2) + C_unfix(start2), \                                                           C_unfix(len) ) == 0)#define C_substring_compare_case_insensitive(s1, s2, start1, start2, len) \                                        C_mk_bool(C_strncasecmp((C_char *)C_data_pointer(s1) + C_unfix(start1), \                                                                (C_char *)C_data_pointer(s2) + C_unfix(start2), \                                                                C_unfix(len) ) == 0)#define C_subvector_copy(v1, v2, start1, end1, start2) \                                        (C_memcpy_slots((C_char *)C_data_pointer(v2) + C_unfix(start2), \                                                  (C_char *)C_data_pointer(v1) + C_unfix(start1), \						  C_unfix(end1) - C_unfix(start1) ), C_SCHEME_UNDEFINED)#define C_words(n)                      C_fix(C_bytestowords(C_unfix(n)))#define C_bytes(n)                      C_fix(C_wordstobytes(C_unfix(n)))#define C_random_fixnum(n)              C_fix(rand() % C_unfix(n))#define C_randomize(n)                  (srand(C_unfix(n)), C_SCHEME_UNDEFINED)#define C_block_size(x)                 C_fix(C_header_size(x))#define C_pointer_address(x)            ((C_byte *)C_u_i_car(x))#define C_block_address(ptr, n, x)      C_a_unsigned_int_to_num(ptr, n, x)#define C_offset_pointer(x, y)          (C_pointer_address(x) + (y))#define C_kontinue(k, r)                ((C_proc2)(void *)C_u_i_car(k))(2, (k), (r))#define C_fetch_byte(x, p)              (((unsigned C_byte *)((C_SCHEME_BLOCK *)(x))->data)[ p ])#define C_poke_integer(x, i, n)         (C_set_block_item(x, C_unfix(i), C_num_to_int(n)), C_SCHEME_UNDEFINED)#define C_pointer_to_block(p, x)        (C_set_block_item(p, 0, (C_word)C_data_pointer(x)), C_SCHEME_UNDEFINED)#define C_null_pointerp(x)              C_mk_bool((void *)C_u_i_car(x) == NULL)#define C_update_pointer(p, ptr)        (C_set_block_item(ptr, 0, C_num_to_unsigned_int(p)), C_SCHEME_UNDEFINED)#define C_copy_pointer(from, to)        (C_set_block_item(to, 0, C_u_i_car(from)), C_SCHEME_UNDEFINED)#define C_direct_return(dk, x)          (C_kontinue(dk, x), C_SCHEME_UNDEFINED)#ifdef C_SIXTY_FOUR# define C_poke_integer_32(x, i, n)     (((C_s32 *)C_data_pointer(x))[ C_unfix(i) ] = C_unfix(n), C_SCHEME_UNDEFINED)#else# define C_poke_integer_32              C_poke_integer#endif#define C_copy_memory(to, from, n)      (C_memcpy(C_data_pointer(to), C_data_pointer(from), C_unfix(n)), C_SCHEME_UNDEFINED)#define C_set_memory(to, c, n)          (C_memset(C_data_pointer(to), C_character_code(c), C_unfix(n)), C_SCHEME_UNDEFINED)#define C_string_compare(to, from, n)   C_fix(C_strncmp(C_c_string(to), C_c_string(from), C_unfix(n)))#define C_string_compare_case_insensitive(from, to, n) \                                        C_fix(C_strncasecmp(C_c_string(from), C_c_string(to), C_unfix(n)))#define C_rename_file(old, new)         C_fix(rename(C_c_string(old), C_c_string(new)))#define C_delete_file(fname)            C_fix(remove(C_c_string(fname)))#define C_poke_double(b, i, n)          (((double *)C_data_pointer(b))[ C_unfix(i) ] = C_c_double(n), C_SCHEME_UNDEFINED)#define C_poke_c_string(b, i, from)     (C_strcpy((char *)C_block_item(b, C_unfix(i)), C_data_pointer(from)), C_SCHEME_UNDEFINED)#define C_peek_fixnum(b, i)             C_fix(C_block_item(b, C_unfix(i)))#define C_peek_byte(ptr, i)             C_fix(((unsigned char *)C_u_i_car(ptr))[ C_unfix(i) ])#define C_dupstr(s)                     C_strdup(C_data_pointer(s))#define C_poke_pointer(b, i, x)         (C_set_block_item(b, C_unfix(i), (C_word)C_data_pointer(x)), C_SCHEME_UNDEFINED)#define C_poke_pointer_or_null(b, i, x) (C_set_block_item(b, C_unfix(i), (C_word)C_data_pointer_or_null(x)), C_SCHEME_UNDEFINED)#define C_qfree(ptr)                    (C_free(C_c_pointer_nn(ptr)), C_SCHEME_UNDEFINED)#if defined(__MWERKS__) && !defined(__INTEL__)# define C_tty_portp(p)                 C_SCHEME_FALSE#else# define C_tty_portp(p)                 C_mk_bool(isatty(fileno(C_port_file(p))))#endif#define C_emit_eval_trace_info(x, y, z) C_emit_trace_info2("<eval>", x, y, z)#define C_emit_syntax_trace_info(x, y, z) C_emit_trace_info2("<syntax>", x, y, z)/* These expect C_VECTOR_TYPE to be 0: */#define C_vector_to_structure(v)        (((C_SCHEME_BLOCK *)(v))->header |= C_STRUCTURE_TYPE, C_SCHEME_UNDEFINED)#define C_vector_to_closure(v)          (((C_SCHEME_BLOCK *)(v))->header |= C_CLOSURE_TYPE, C_SCHEME_UNDEFINED)#define C_string_to_bytevector(s)       (((C_SCHEME_BLOCK *)(s))->header = C_header_size(s) | C_BYTEVECTOR_TYPE, C_SCHEME_UNDEFINED)#define C_string_to_lambdainfo(s)       (((C_SCHEME_BLOCK *)(s))->header = C_header_size(s) | C_LAMBDA_INFO_TYPE, C_SCHEME_UNDEFINED)#ifdef C_TIMER_INTERRUPTS# ifdef PARANOIA#  define C_check_for_interrupt         C_paranoid_check_for_interrupt()# else#  define C_check_for_interrupt         if(--C_timer_interrupt_counter <= 0) C_raise_interrupt(C_TIMER_INTERRUPT_NUMBER)# endif#else# define C_check_for_interrupt#endif#if defined(__GNUC__) || defined(__INTEL_COMPILER)# define C_a_i(a, n)                    ({C_word *tmp = *a; *a += (n); tmp;})# define C_a_i_cons(a, n, car, cdr)     ({C_word tmp = (C_word)(*a); (*a)[0] = C_PAIR_TYPE | 2; *a += 3; \                                          C_set_block_item(tmp, 0, car); C_set_block_item(tmp, 1, cdr); tmp;})#else# define C_a_i_cons(a, n, car, cdr)     C_pair(a, car, cdr)#endif /* __GNUC__ */#define C_a_i_data_mpointer(ptr, n, x)  C_mpointer(ptr, C_data_pointer(x))#define C_a_int_to_num(ptr, n, i)       C_int_to_num(ptr, i)#define C_a_unsigned_int_to_num(ptr, n, i)  C_unsigned_int_to_num(ptr, i)#define C_a_double_to_num(ptr, n)       C_double_to_number(C_flonum(ptr, n))#define C_a_i_vector                    C_vector#define C_list                          C_a_i_list#define C_i_setslot(x, i, y)            (C_mutate(&C_block_item(x, C_unfix(i)), y), C_SCHEME_UNDEFINED)#define C_i_set_i_slot(x, i, y)         (C_set_block_item(x, C_unfix(i), y), C_SCHEME_UNDEFINED)#define C_u_i_set_car(p, x)             (C_mutate(&C_u_i_car(p), x), C_SCHEME_UNDEFINED)#define C_u_i_set_cdr(p, x)             (C_mutate(&C_u_i_cdr(p), x), C_SCHEME_UNDEFINED)#define C_i_not(x)                      (C_truep(x) ? C_SCHEME_FALSE : C_SCHEME_TRUE)#define C_i_equalp(x, y)                C_mk_bool(C_equalp((x), (y)))#define C_i_fixnumevenp(x)              C_mk_nbool((x) & 0x00000002)#define C_i_fixnumoddp(x)               C_mk_bool((x) & 0x00000002)#define C_i_nullp(x)                    C_mk_bool((x) == C_SCHEME_END_OF_LIST)#define C_i_structurep(x, s)            C_mk_bool(!C_immediatep(x) && C_header_bits(x) == C_STRUCTURE_TYPE && C_block_item(x, 0) == (s))#define C_u_i_char_alphabeticp(x)       C_mk_bool(C_isalpha(C_character_code(x)))#define C_u_i_char_numericp(x)          C_mk_bool(C_isdigit(C_character_code(x)))#define C_u_i_char_whitespacep(x)       C_mk_bool(C_isspace(C_character_code(x)))#define C_u_i_char_upper_casep(x)       C_mk_bool(C_isupper(C_character_code(x)))#define C_u_i_char_lower_casep(x)       C_mk_bool(C_islower(C_character_code(x)))#define C_u_i_char_upcase(x)            C_make_character(C_toupper(C_character_code(x)))#define C_u_i_char_downcase(x)          C_make_character(C_tolower(C_character_code(x)))#define C_i_list_ref(lst, i)            C_i_car(C_i_list_tail(lst, i))#define C_u_i_list_ref(lst, i)          C_u_i_car(C_i_list_tail(lst, i))#define C_u_i_car(x)                    C_block_item(x, 0)#define C_u_i_cdr(x)                    C_block_item(x, 1)#define C_u_i_caar(x)                   C_u_i_car( C_u_i_car( x ) )#define C_u_i_cadr(x)                   C_u_i_car( C_u_i_cdr( x ) )#define C_u_i_cdar(x)                   C_u_i_cdr( C_u_i_car( x ) )#define C_u_i_cddr(x)                   C_u_i_cdr( C_u_i_cdr( x ) )#define C_u_i_caaar(x)                  C_u_i_car( C_u_i_caar( x ) )#define C_u_i_caadr(x)                  C_u_i_car( C_u_i_cadr( x ) )#define C_u_i_cadar(x)                  C_u_i_car( C_u_i_cdar( x ) )#define C_u_i_caddr(x)                  C_u_i_car( C_u_i_cddr( x ) )#define C_u_i_cdaar(x)                  C_u_i_cdr( C_u_i_caar( x ) )#define C_u_i_cdadr(x)                  C_u_i_cdr( C_u_i_cadr( x ) )#define C_u_i_cddar(x)                  C_u_i_cdr( C_u_i_cdar( x ) )#define C_u_i_cdddr(x)                  C_u_i_cdr( C_u_i_cddr( x ) )#define C_u_i_caaaar(x)                 C_u_i_car( C_u_i_caaar( x ) )#define C_u_i_caaadr(x)                 C_u_i_car( C_u_i_caadr( x ) )#define C_u_i_caadar(x)                 C_u_i_car( C_u_i_cadar( x ) )#define C_u_i_caaddr(x)                 C_u_i_car( C_u_i_caddr( x ) )#define C_u_i_cadaar(x)                 C_u_i_car( C_u_i_cdaar( x ) )#define C_u_i_cadadr(x)                 C_u_i_car( C_u_i_cdadr( x ) )#define C_u_i_caddar(x)                 C_u_i_car( C_u_i_cddar( x ) )#define C_u_i_cadddr(x)                 C_u_i_car( C_u_i_cdddr( x ) )#define C_u_i_cdaaar(x)                 C_u_i_cdr( C_u_i_caaar( x ) )#define C_u_i_cdaadr(x)                 C_u_i_cdr( C_u_i_caadr( x ) )#define C_u_i_cdadar(x)                 C_u_i_cdr( C_u_i_cadar( x ) )#define C_u_i_cdaddr(x)                 C_u_i_cdr( C_u_i_caddr( x ) )#define C_u_i_cddaar(x)                 C_u_i_cdr( C_u_i_cdaar( x ) )#define C_u_i_cddadr(x)                 C_u_i_cdr( C_u_i_cdadr( x ) )#define C_u_i_cdddar(x)                 C_u_i_cdr( C_u_i_cddar( x ) )#define C_u_i_cddddr(x)                 C_u_i_cdr( C_u_i_cdddr( x ) )#define C_a_i_times( ptr, n, x, y)      C_2_times( ptr, x, y)#define C_a_i_plus(  ptr, n, x, y)      C_2_plus(  ptr, x, y)#define C_a_i_minus( ptr, n, x, y)      C_2_minus( ptr, x, y)#define C_a_i_divide(ptr, n, x, y)      C_2_divide(ptr, x, y)#if defined(__GNUC__) || defined(__INTEL_COMPILER)# define C_i_not_pair_p(x)              ({C_word tmp = (x); C_mk_bool(C_immediatep(tmp) || C_block_header(tmp) != C_PAIR_TAG);})#else# define C_i_not_pair_p                 C_i_not_pair_p_2#endif#define C_i_check_closure(x)            C_i_check_closure_2(x, C_SCHEME_FALSE)#define C_i_check_exact(x)              C_i_check_exact_2(x, C_SCHEME_FALSE)#define C_i_check_inexact(x)            C_i_check_inexact_2(x, C_SCHEME_FALSE)#define C_i_check_number(x)             C_i_check_number_2(x, C_SCHEME_FALSE)#define C_i_check_string(x)             C_i_check_string_2(x, C_SCHEME_FALSE)#define C_i_check_bytevector(x)         C_i_check_bytevector_2(x, C_SCHEME_FALSE)#define C_i_check_symbol(x)             C_i_check_symbol_2(x, C_SCHEME_FALSE)#define C_i_check_list(x)               C_i_check_list_2(x, C_SCHEME_FALSE)#define C_i_check_pair(x)               C_i_check_pair_2(x, C_SCHEME_FALSE)#define C_i_check_vector(x)             C_i_check_vector_2(x, C_SCHEME_FALSE)#define C_i_check_structure(x, st)      C_i_check_structure_2(x, (st), C_SCHEME_FALSE)#define C_i_check_char(x)               C_i_check_char_2(x, C_SCHEME_FALSE)#define C_u_i_8vector_length(x)         C_fix(C_header_size(C_block_item(x, 1)))#define C_u_i_16vector_length(x)        C_fix(C_header_size(C_block_item(x, 1)) >> 1)#define C_u_i_32vector_length(x)        C_fix(C_header_size(C_block_item(x, 1)) >> 2)#define C_u_i_64vector_length(x)        C_fix(C_header_size(C_block_item(x, 1)) >> 3)#define C_u_i_u8vector_ref(x, i)        C_fix(((unsigned char *)C_data_pointer(C_block_item((x), 1)))[ C_unfix(i) ])

⌨️ 快捷键说明

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