- Do not use identifiers that are already declared
- e.g., don't name a variable
errno
- Do not pass functions invalid values
- For floating point exception functions, only pass
0 or bitwise OR of floating point macros - Do not modify the string returned by
setlocale() - Do not call
setjmp() in stupid places (eg. header files) - Do not call
longjmp() before calling setjmp() - Do not call
va_start() with a parameter declared with the register storage class, of array type, or a type that isn't compatible with the type after default argument promotions - Do not try to get the address constant of a bit-field
- e.g., do not:
&(t.member-designator)
- When functions fail, data structures often have indeterminate contents
- e.g.,
wcsxfrm(), wcsftime(), mbrtowc(), wcrtomb(), strxfrm(), strftime()
- Do not mismatch multibyte conversion states with character sequences in another state
- Do not change the
LC_CTYPE in between calls to character conversion functions - Only pass functions the type they ask for
- We might already have a rule for this, but I couldn't find it
- If the result of a function cannot be represented, the behavior is undefined
- e.g.,
abs(), labs(), llabs(), div(), ldiv(), lldiv().
{"serverDuration": 63, "requestCorrelationId": "74bca388fb3b3131"}