You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TLM头文件中宏语句`type Get ## name(...)`的解析疑问

关于TLM头文件中Getter宏定义的作用与展开解析

语句核心作用

type Get ## name (void) const { return name ; } 是预处理器宏的组成部分,用来自动生成类成员变量的只读访问函数(Getter),核心目的是减少重复编写Getter/Setter的冗余代码:

  • type:指定函数返回值的类型(与目标成员变量类型一致)
  • Get ## name:通过预处理器的**Token粘贴(字符串拼接)**功能,把Get前缀和传入的name参数合并,生成Getter函数名
  • const修饰:标记该函数为只读成员函数,保证不会修改类的成员变量
  • 函数体直接返回与参数name同名的类成员变量

具体展开过程

结合你给出的宏调用示例逐一说明:

示例1:CHIATTR_PROP_GETSET_GEN(ReturnNID_StashNID, uint16_t)

预处理器会将宏内的占位符逐一替换为传入的参数:

  • type替换为uint16_t
  • name替换为ReturnNID_StashNID
  • Get ## name通过拼接生成GetReturnNID_StashNID

最终展开后的代码为:

uint16_t GetReturnNID_StashNID(void) const { return ReturnNID_StashNID; }

示例2:CHIATTR_PROP_GETSET_GEN_FUNC_NAME(ReturnNID, ReturnNID_StashNID, uint16_t)

这个宏支持函数名与成员变量名分离,展开逻辑如下:

  • type替换为uint16_t
  • func_name替换为ReturnNID,因此Get ## func_name拼接为GetReturnNID
  • prop_name替换为ReturnNID_StashNID(实际要访问的类成员变量)

展开后的代码为:

uint16_t GetReturnNID(void) const { return ReturnNID_StashNID; }

内容的提问来源于stack exchange,提问作者celia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:35:24