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

C++中typeid获取函数类型输出FficE,E的含义求解

解析g++中typeid(myFun)返回的FficE编码含义

你看到的FficE是g遵循**Itanium C ABI**标准生成的类型编码,各字符的具体含义如下:

  • F:标记这是一个函数类型(Function)
  • f:函数的返回类型为float
  • i:第一个参数类型为int
  • c:第二个参数类型为char
  • E:函数类型定义的结束标记(End of function type)

编码规则细节

在Itanium C++ ABI的类型编码规范中,函数类型的格式固定为:
F<返回类型><参数类型列表>E
其中E用来明确闭合函数类型的定义,防止类型编码串出现歧义——比如如果后续还有嵌套的类型定义,E能清晰区分当前函数类型的边界。

举个验证例子:如果定义一个无参数的float返回函数

float noArgFun() { return 0.0f; }

用g++编译后,typeid(noArgFun).name()会返回FfE,正好符合F[返回类型]E的格式,能直观看到E的作用。

需要注意的是,C标准并未规定std::type_info::name()的具体输出格式,该返回值完全由编译器实现决定。只有g、clang等遵循Itanium ABI的编译器会使用这套编码规则,其他编译器(如MSVC)会输出更易读的字符串(比如float (__cdecl*)(int,char))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:33:17