Help > Frequently Asked Questions > Are there any known issues and limitations?
Are there any known issues and limitations?

There are some limitations and deviations from the standard in C.impl. Most of those are down to the fact it is an interpreter.

1.    Function pointers and function address dereferencing are not supported.


2.    In for(), while(), and do...while() loops, 'break' and 'continue' can only work from within a {} block.


3.    The 'goto' instruction only allows jumping to a location at the same or upper {} depth level.


4.    A goto label must have unique name among all labels globally.


5.    The 'extern' keyword is not supported since the entire program and included libraries are regarded as a single source file.


6.    In the ternary operator ?: structure, there must be a space before the colon ':' so it is not mistaken for a label.


7.    The main() function must not have parameters or a return value.


8.    In composite data types (enum, struct, union), the name of the type must be before the {} block, but can't be after.


9.    Structures, unions, and enums are all supported but have high runtime memory cost and should be used with care.


10. Keywords 'struct', 'union', and 'enum' must be used only for the initial type declaration, but not for declaring later instances.


11. Casting to structure or union pointer will not work. The cost of its implementation in an interpreter is massive in terms of both runtime memory and execution speed.


12.  Indexing by pointers (eg. int a[10]; int b = *(a+1); ) will not work for data types other than 8-bit. Indexing needs to be done in the brackets way.