A basic understanding of the various environmental limits. The full list is in section 5.2.4.1 of the C specification. Here are a few;
- 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 character string
literal or wide string literal (after
concatenation)
- 65535 bytes in an
object (in a hosted environment only)
- 15nesting levels for #includedfiles
- 1023 case labels for a switch
statement (excluding those for
anynested switch statements)
I was actually a bit surprised at the limit of 1023 case labels for a switch statement, I can forsee that being exceeded for generated code/lex/parsers fairly easially.
If these limits are exceeded, you have undefined behavior (crashes, security flaws, etc...).
Right, I know this is from the C specification, but C++ shares these basic supports.