If you are using a C99 compiler, then as well as constructs in the C90 subset supported by eCv, you may use the following C99 constructs:
comments introduced by // (these are allowed by eCv even in C90 mode)
declarations do not have to be at the start of a compound statement (however, eCv does not allow declarations directly in the cases of a switch-statement)
inline storage class when declaring functions
_Bool type (provided that you set up the correct definitions so that it is equivalent to eCv's bool type)
compound literals (but not using named member notation)
the first clause of a for-loop header may be a declaration instead of an expression
If you are using a C++ 2011 compiler, then as well as constructs in the C++ 1998 (ISO C++ 2003) subset supported by eCv, you may use the following C++ 2011 constructs:
final reserved identifier when declaring a class
final and override reserved identifiers when overriding an inherited virtual function
nullptr keyword
Note that eCv treats final and override as keywords when processing C++ source, instead of reserved identifiers as specified in the C++ 2011 language standard. Therefore, they may not be used as normal identifiers. These keywords and the nullptr keyword are recognized even when the compiler type is set to C++ 1998.
eCv Manual, Version 7.0, February 2017.
© 2017 Escher Technologies Limited. All rights reserved.