Multi-dimensional arrays are not supported. They can be emulated in software by partitioning creating a single large array and calculating offsets.
Typedefs are supported, but typedefs to pointers are not, eg:
typedef int newvar_t;
is supported, but:
typedef int *newvar_t;
is not.
Are supported, but they can’t be prototyped, for example:
int (*func)();
is supported, but:
int (*func)(int val, char *str);
is not. This is unfortunate in terms of type safety, but during development you could use something like this to provide type safety:
#ifdef DEVELOPMENT #define CALLIT(f,v,s) callmyfunc(f,v,s) #else #define CALLIT(f,v,s) f(f,s) #endif #ifdef DEVELOPMENT int callmyfunc(int (*func)(), int val, char *str) { return func(val,str); } #endif
Bitfields are not supported.
Expressions are evaluated left to right, and no folding is applied, as a result (1 + j + 3) will generate bulkier code than ( j + 1 + 3 ).