Subsections
- Diagnostics are output to stderr, in the format <filename>:<line-number>:
<warning|error> <diagnostic-number>: <diagnostic-description>
- Nonempty sequences of white-space are retained in translation phase
3.
- When no custom crt0 is used (i.e. the port does not support a custom
crt0, or the option
is not used), the name and type of the function called at program
startup is void main(void) or int main(void). Otherwise
the name and type depends on the custom crt0.
- See SDCC source (and your own code if you use a custom crt0 for a
target that supports it) for any other information on the environment.
- See the compiler and assembler source for information on characters
that may appear in identifiers and on the number of significant initial
characters.
- There are 8 bits in a byte.
- Values of members of the execution character set: TODO.
- Values of members of the execution character set for escape sequences:
TODO.
- Value of char with something weird stored in it: TODO.
- unsigned char has the same range, representation and behavior as ”plain”
char (unless --fsigned-char
is used).
- See the SDCC source for further information on character sets.
- There are no extended integer types.
- See the implementation (soft float library) for any information on
floating point.
- For the result of converting between pointers and integers see the
SDCC source code.
- For the size of the result of subtracting two pointers to elements
of the same array see the SDCC source code.
- The extend to which suggestions made by register are effective depends
on the target.
- SDCC will inline functions if and only if they are declared using
inline and do not have variable arguments.
- A plain int bit-field is treated as a signed int bit-field.
- There are no allowed bit-field types other than _Bool, int, signed
int, unsigned int and the bit-precise integer types.
- Atomic types are not permitted for bit-fields.
- If a bit-fields does not fit into the same byte as the previous bit-fields,
it starts on the next byte.
- bit-fields are allocated in the same order as they appear in the source.
- Non-bit-field members of structures are aligned on byte boundaries
(i.e. there are no padding bytes).
- structures do not need to have named members.
- For enumerations, the compatible type is the first from the following
list that fits the constants: unsigned char, signed char, unsigned
int, signed int, unsigned long int, signed long int, unsigned long
long int, signed long long int.
- SDCC shall preserve all volatile reads and writes, but does not guarantee
them to be atomic (except for atomic types and volatile sig_atomic_t).
- Function types may not be qualified.
- See the preprocessor source for information on preprocessing directives.
- See the respective library headers for the library functions available.
- See assert.h and library source for the format of the diagnostic printed
by the assert macro.
- There is no fegetexceptflag function.
- There is no feraiseexcept function.
- There is no setlocale function.
- There is no FLT_EVAL_METHOD macro.
- There is no DEC_EVAL_METHOD macro.
- There are no non-required domain errors for mathematics functions.
- See library source for the values returned by mathematical functions
on domain error and pole error (and anything else on mathematical
functions and floating type encodings).
- calloc, malloc and realloc return a pointer to an allocated object
when the requested size is zero.
- See library headers for the null-pointer constant to which NULL expands.
- See library headers and source for anything else about the library.
- See the respective library headers for the values or expressions for
macros specified in float.h, limits.h, stdint.h.
- Multithreading is not supported.
- The number of bytes in any object is the minimum allowed (except for
some padding bits on bit-fields), byte order depends on the target.
- No extended alignments are supported.
- There are no valid alignments other than those returned by _Alignof.
- sizeof always returns the smallest value allowed assuming an 8-bit
char. _Alignof always returns 0.