scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

cstd-c99.h (2833B)


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