The following language elements are not supported by the compiler described here, or only to a limited extent.
Alignment
The compilers offers three ways to increase an alignment: #pragma aligned
, the keyword _Alignas
in C11 and the keyword alignas
in C++17. These can be used to increase the alignment for struct members only. There is no effect on variables.
Declarations without type
In language mode C11, each declaration must have an explicit type. The type could be missing in C89, then int
was assumed. If the type is missing, an error occurs in mode C11 that can be downgraded to a warning.
Example
|
Unicode
The term Unicode means a standard that specifies a binary representation for many characters in the world. The standard specifies more than 100,000 different characters. The standard defines several representations, the best known are UTF-8 and UTF-16. In these representations, most characters are represented by more than 1 byte.
The C11 standard has created language elements to describe these characters in the source code: characters with \u, types for Unicode characters and literals in Unicode. These language resources are supported by the C/C++ 4.0 compiler.
However, it should be noted that the functions of the CRTE only support characters and strings from normal EBCDIC or ASCII. It is assumed that each character is represented in a byte. This means that the CRTE functions are not suitable for processing Unicode strings.
Floating point format IEEE
The compiler does not support the IEC 60559 standard. The compiler allows you to store float constants in the IEEE format, however, some configuration functions are missing. The values infinity and NaN are also not supported meaningfully. Using these values can lead to strange behavior.
Thread support
The C/C++ compiler does not support a specific thread package. In detail, this means that the headers <threads.h> and <stdatomic.h> are not available. The keywords _Thread_local
and _Atomic
lead to an error message in mode C11. The predefines __STDC_NO_THREADS__
and __STDC_NO_ATOMICS__
are set.
Complex numbers
The C/C++ compiler does not support the complex numbers mentioned in the C11 standard. In detail, this means that the header <complex.h> is not supported. The <complex.h> header in the CRTE is used for complex numbers in C++, its use in C leads to an error message. The keywords _Complex
and _Imaginary
lead to an error message in mode C11. The predefine __STDC_NO_COMPLEX__
is set.
C11 Appendix K
The C11 standard, Appendix K, describes functions that fall under the term "Bounds-checking interfaces". These functions are not offered.
C11 Appendix L
The C11 standard, Appendix L, describes functions that fall under the term "Analyzability". These functions are not offered.