The MSP430 compiler supports C++ as defined in the ANSI/ISO/IEC 14882:2014 standard
(C++14), including these features:
- Complete C++ standard library support,
with exceptions noted below.
- Templates
- Exceptions, which are enabled with the
--exceptions option; see Section 6.9.
- Run-time type information (RTTI), which
can be enabled with the --rtti compiler option.
The compiler supports the
2014 standard of C++ as standardized by the
ISO. However, the following features are not implemented or fully supported:
- The compiler does not support embedded
C++ run-time-support libraries.
- The library supports wide chars
(wchar_t), in that template functions and classes that are defined for char are also
available for wchar_t. For example, wide char stream classes wios, wiostream, wstreambuf
and so on (corresponding to char classes ios, iostream, streambuf) are implemented.
However, there is no low-level file I/O for wide chars. Also, the C library interface to
wide char support (through the C++ headers <cwchar> and <cwctype>) is limited
as described above in the C library.
- The
reinterpret_cast type does not allow casting a pointer-to-member of one class to a
pointer-to-member of another class if the classes are unrelated.
- Constant expressions for target-specific types are only partially supported.
- New character types (introduced in the C++11 standard) are not supported.
- Unicode string literals (introduced in the C++11 standard) are not supported.
- Universal character names in literals (introduced in the C++11 standard) are not
supported.
- Strong compare and exchange (introduced in the C++11 standard) are not supported.
- Bidirectional fences (introduced in the C++11 standard) are not supported.
- Memory model (introduced in the C++11 standard) is not supported.
- Propagating exceptions (introduced in the C++11 standard) is not supported.
- Thread-local storage (introduced in the C++11 standard) is not supported.
- Dynamic initialization and destruction with concurrency (introduced in the C++11
standard) is not supported.
The changes made in
order to support C++14 may cause "undefined symbol" errors to occur if you link with a C++
object file or library that was compiled with an older version of the compiler. If such
linktime errors occur, recompile your C++ code using the --no_demangle command-line option.
If any undefined symbol names begin with _Z or _ZVT, recompile the entire application,
including object files and libraries. If you do not have source code for the libraries,
download a newly-compiled version of the library.