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 的值。

___

另请参阅:

GEL 函数:按字母顺序排列的列表