Arjun Suresh (talk | contribs) |
Arjun Suresh (talk | contribs) |
||
Line 35: | Line 35: | ||
|} | |} | ||
− | ==== | + | ==Language limits== |
+ | Any C compiler (conforming to C11 standard) should be able to handle the following cases: | ||
+ | |||
+ | * 127 nesting levels of blocks | ||
+ | * 63 nesting levels of conditional inclusion | ||
+ | <!-- 12 pointer, array, and function declarators (in any combinations) modifying an | ||
+ | arithmetic, structure, union, or void type in a declaration --> | ||
+ | * 63 nesting levels of parenthesized declarators within a full declarator | ||
+ | * 63 nesting levels of parenthesized expressions within a full expression | ||
+ | * 63 significant initial characters in an internal identifier or a macro name | ||
+ | * 31 significant initial characters in an external identifier | ||
+ | * 4095 external identifiers in one translation unit | ||
+ | * 511 identifiers with block scope declared in one block | ||
+ | * 4095 macro identifiers simultaneously defined in one preprocessing translation unit | ||
+ | * 127 parameters in one function definition | ||
+ | * 127 arguments in one function call | ||
+ | * 127 parameters in one macro definition | ||
+ | * 127 arguments in one macro invocation | ||
+ | * 4095 characters in a logical source line | ||
+ | * 4095 characters in a string literal (after concatenation) | ||
+ | * 65535 bytes in an object (in a hosted environment only) | ||
+ | * 15 nesting levels for #included files | ||
+ | * 1023 case labels for a switch statement (excluding those for any nested switch | ||
+ | statements) | ||
+ | * 1023 members in a single structure or union | ||
+ | * 1023 enumeration constants in a single enumeration | ||
+ | * 63 levels of nested structure or union definitions in a single struct-declaration-list | ||
{{Template:FBD}} | {{Template:FBD}} |
Keywords are reserved words in C, which a programmer must not use for other purposes. In C11 standard there are totally 44 keywords which are as follows:
auto | if | unsigned |
break | inline | void |
case | int | volatile |
char | long | while |
const | register | _Alignas |
continue | restrict | _Alignof |
default | return | _Atomic |
do | short | _Bool |
double | signed | _Complex |
else | sizeof | _Generic |
enum | static | _Imaginary |
extern | struct | _Noreturn |
float | switch | _Static_assert |
for | typedef | _Thread_local |
goto | union | |
Any C compiler (conforming to C11 standard) should be able to handle the following cases:
statements)
Keywords are reserved words in C, which a programmer must not use for other purposes. In C11 standard there are totally 44 keywords which are as follows:
auto | if | unsigned |
break | inline | void |
case | int | volatile |
char | long | while |
const | register | _Alignas |
continue | restrict | _Alignof |
default | return | _Atomic |
do | short | _Bool |
double | signed | _Complex |
else | sizeof | _Generic |
enum | static | _Imaginary |
extern | struct | _Noreturn |
float | switch | _Static_assert |
for | typedef | _Thread_local |
goto | union | |
Any C compiler (conforming to C11 standard) should be able to handle the following cases:
statements)