7.9.1.16.GEL 表达式中的 C++ 限制¶
GEL 表达式中不能完全支持以下 C++ 功能。
从虚基类转换或转换为虚基类
有关虚基类的任何转换将被视为 reinterpret_cast(即不执行指针调整)。
限定成员名
成员名 -“.”或“->”运算符后的标识符 - 无法限定,例如 obj.Base::base_member
析构函数无法命名
在 GEL 表达式中,的析构函数无法命名。class (X::~X)
指向成员的指针
指向成员值的指针作为实现结构显示。
typedef
GEL 不提供通过 typedef 定义的类型同义词。
部分限定类型
不在顶级命名空间中的类型必须被完全限定,不能与标识符一样被部分限定。
运行时类型识别
Code Composer Studio 不能识别由基类指针引用的动态(运行时)类型的对象。
C++ 引用语义
C++ 引用在 GEL 中显示为指针;GEL 表达式必须显式取消对 C++ 的引用。
C++ 函数运算符
“Watch”窗口和“Command”窗口无法解析类中定义的重载运算符的地址。它不会将这些运算符识别为有效的函数名。其中包含以运算符开头,并以任何特殊字符结尾的类的所有函数名,这些特殊字符包括 +、-、*、++、–、/、->、[](例如 operator+、operator- 或 operator[])。为了克服这一限制,您可以使用 Symbol Browser 来解析任何重载运算符函数。
GEL 宏中的内部括号
GEL 宏中的内部括号不起作用,可能引起错误。例如,是有效的,但会引起内存映射读取错误。 #define SQR(x) (x*x)
#define SQR(x) ((x)*(x))
GEL 语言始终将 (identifier) 解释为类型转换,而 C/C++ 语言可能会在 identifier 为类型名时将其解释为类型转换,也可能将其解释为变量 identifier 的值。
___
另请参阅: