scc

Simple C99 Compiler
Log | Files | Refs | README | LICENSE

sizes_c99.h (2832B)


      1 /* See LICENSE file for copyright and license details. */
      2 
      3 /*
      4  * 127 nesting levels of blocks
      5  */
      6 #define NR_BLOCK        127
      7 /*
      8  * 63 nesting levels of conditional inclusion
      9  */
     10 #define NR_COND         63
     11 /*
     12  * 12 pointer, array, and function declarators (in any combinations)
     13  * modifying an arithmetic, a structure, a union, or an incomplete type
     14  * in a declaration
     15  */
     16 #define NR_DECLARATORS  12
     17 /*
     18  * 63 nesting levels of parenthesized declarators within a full
     19  * declarator
     20  */
     21 #define NR_SUBTYPE      63
     22 /*
     23  * 63 nesting levels of parenthesized expressions within a full
     24  * expression
     25  */
     26 #define NR_SUBEXPR      63
     27 /*
     28  * 63 significant initial characters in an internal identifier or a
     29  * macro name (each universal character name or extended source
     30  * character is considered a single character)
     31  */
     32 #define INTIDENTSIZ     63
     33 /*
     34  * 31 significant initial characters in an external identifier (each
     35  * universal character name specifying a short identifier of 0000FFFF
     36  * or less is considered 6 characters, each universal character name
     37  * specifying a short identifier of 00010000 or more is considered 10
     38  * characters, and each extended source character is considered the
     39  * same number of characters as the corresponding universal character
     40  * name, if any)
     41  */
     42 #define EXTIDENTSIZ     31
     43 /*
     44  * 4095 external identifiers in one translation unit
     45  */
     46 #define NR_EXT_IDENT    4095
     47 /*
     48  * 511 identifiers with block scope declared in one block
     49  */
     50 #define NR_INT_IDENT    511
     51 /*
     52  * 4096 macro identifiers simultaneously defined in one preprocessing
     53  * translation unit
     54  */
     55 #define NR_MACROIDENT   4096
     56 /*
     57  * 127 parameters in one function definition
     58  */
     59 #define NR_FUNPARAM     127
     60 /*
     61  * 127 arguments in one function call
     62  */
     63 #define NR_FUNARG       127
     64 /*
     65  * 127 parameters in one macro definition
     66  */
     67 #define NR_MACROPARAM   127
     68 /*
     69  * 127 arguments in one macro invocation
     70  */
     71 #define NR_MACROARG     127
     72 /*
     73  * 4095 characters in a logical source line
     74  */
     75 #define LINESIZ         4095
     76 /*
     77  * 4095 characters in a character string literal or wide string literal
     78  * (after concatenation)
     79  */
     80 #define STRINGSIZ       4095
     81 /*
     82  * 65535 bytes in an object (in a hosted environment only)
     83  */
     84 #define OBJECTSIZ       65535
     85 /*
     86  * 15 nesting levels for #include'd files
     87  */
     88 #define NR_INCLUDE      15
     89 /*
     90  * 1023 case labels for a switch statement (excluding those for any
     91  * nested switch statements)
     92  */
     93 #define NR_SWITCH       1023
     94 /*
     95  * 1023 members in a single structure or union
     96  */
     97 #define NR_FIELDS       1023
     98 /*
     99  * 1023 enumeration constants in a single enumeration
    100  */
    101 #define NR_ENUM_CTES    1023
    102 /*
    103  * 63 levels of nested structure or union definitions in a single
    104  * struct-declaration-list
    105  */
    106 #define NR_STRUCT_LEVEL 63
    107 /*
    108  * number of defined structs/unions in one translation unit
    109  */
    110 #define NR_MAXSTRUCTS   127