【问题标题】:How to get human-readable type of a complex expression at compilation time?如何在编译时获得人类可读的复杂表达式类型?
【发布时间】:2015-08-07 19:22:33
【问题描述】:

假设有一个复杂的表达式EXPRESSION,即使是 IDE 也很难找到其中调用的一些方法等,因此很难弄清楚它计算的类型。目前为了让编译器(gcc)打印出人类可读的类型,我正在使用类似

的构造
struct {} s=EXPRESSION;

如果计算结果不是{},则不会为任何表达式编译。在这种情况下,gcc 会说类似

从 Type_I_am_Interested_In 转换为非标量类型 main():: 请求

,这让我可以看到Type_I_am_Interested_In

我现在的问题是,有没有更好的方法来获得人类可读的Type_I_am_Interested_In,使用一些 gcc/clang 扩展或其他方式而不是依赖错误消息格式?

【问题讨论】:

    标签: c++ gcc types


    【解决方案1】:

    您可以使用decltype 获取表达式的类型,然后使用部分专用模板和typeid(通过cxxabi.h 分解)根据需要创建可读的表单。

    虽然您可以跳过模板分解步骤,但如果没有它,您收到的信息会略少。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 2023-02-09
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 2011-10-12
      • 2020-10-17
      相关资源
      最近更新 更多