Next Previous Contents

## 4. Differences to the ISO standard

Apart from the things listed below, the compiler does support additional keywords, has several functions in the standard headers with names outside the reserved namespace and a few syntax extensions. All these can be disabled with the `--standard` command line option. Its use for maximum standards compatibility is advised.

Here is a list of differences between the language, the compiler accepts, and the one defined by the ISO standard:

- The datatypes "float" and "double" are not available.
- C Functions may not return structs (or unions), and structs may not be passed as parameters by value. However, struct assignment *is* possible.
- Part of the C library is available only with fastcall calling conventions (see below). It means that you must not mix pointers to those functions with pointers to user-written, not-fastcall functions.
- The `volatile` keyword doesn't have an effect. This is not as bad as it sounds, since the 6502 has so few registers that it isn't possible to keep values in registers anyway.

There may be some more minor differences I'm currently not aware of. The biggest problem is the missing float data type. With this limitation in mind, you should be able to write fairly portable code.

Next Previous Contents