* standard C language features

    intrinsic type = aliases ...
        __flt32_t  = float
        __flt64_t  = double
        __bool_t   = bool (byte that can contain only 0 or 1)
        __int8_t   = char  = signed char
        __int16_t  = short = signed short = int = signed int = __ssize_t
        __int32_t  = long  = signed long
        __uint8_t  = unsigned char
        __uint16_t = unsigned short = unsigned int = __size_t
        __uint32_t = unsighed long
        __void     = void

    struct/union declaration does automatic typedef of same name

    cannot declare function pointers like this:
        void (*funcptr) (int arg);
    must use separate typedef and declaration:
        typedef void FuncType (int arg);
        FuncType *funcptr;

    no multi-dimension arrays

* some C++ features

    multiple inheritance

    virtual functions

    try/catch/throw PLUS finally
        can only throw & catch a pointer type

    no parameters to constructor (use init or static functions as needed)

    no class, private, protected, public (use struct & all are public)

    no reference types

    no overloading

    no templates

    no namespaces

    no std:: library

    no function bodies in struct decl, must define externally

    use '<structtype>::<structtype> ();' if no explicit constructor
    to tell it where to put vtable and internal init() function.
    if struct has explicit constructor, vtable and internal init()
    are inserted right after constructor body.