7.9.1.16. C++ Limitations within GEL ExpressionsΒΆ
The following C++ features are not fully supported within GEL expressions.
Casting to or from a virtual base class
In order to correctly cast a pointer to or from a virtual base class, the debugger requires the same runtime type information that the compiler would use for a dynamic cast. Depending on compiler defaults, a compiler flag may be required to include this information. In the absence of this information, any cast to or from a virtual base class may be incorrect.
Qualified member names
Member names - identifiers after a '.' or '->' operators - cannot be qualified, as in obj.Base::base_member
Destructor cannot be named
The destructor of a class (X::~X)
cannot be named in a GEL expression.
Pointer to members
Pointer to member values appear as an implementation structure.
Partially qualified types
Types that are not in the top-level namespace must be fully qualified, and cannot be partially-qualified in the same manner as identifiers.
Run-time type identification
Code Composer Studio does not identify the dynamic (run-time) type of objects referred to by base class pointers.
C++ function operator
The Watch window and Command window cannot resolve the address of an overloaded operator defined within a class. It will not recognize them as valid function names. This includes any function name of a class that starts with operator and ends with any special character such as +, -, *, ++, --, /, ->, [] (for example, operator+, operator-, or operator[]). To work around this limitation, you can use Symbol Browser to resolve any overloaded operator functions.
Inner braces in a GEL macro
Inner braces in a GEL macro do not work and may cause errors. For example, #define SQR(x) (x*x)
is functional, but #define SQR(x) ((x)*(x))
causes a memory map read error.
The GEL language always interprets (identifier) as a type cast, while the C/C++ language may interpret this as a type cast if the identifier is a type name, or as the value of the variable identifier.
___
See also: