【问题标题】:How to analyze complicated type expressions in C++?如何在C++中分析复杂的类型表达式?
【发布时间】:2023-02-09 19:10:56
【问题描述】:

在处理复合 C++ 类型时,事情似乎变得复杂起来。

例如,如何分析下面代码中fp的类型?

int *f(int *p, int a)
{
    return p + a;
}

int *(*fp())(int *, int)
{
    return f;
};

代码的语法有解释吗?

【问题讨论】:

  • 将其提供给诸如 cdecl.org 之类的工具(尽管它适用于 C,但我不知道有哪个工具可以理解所有 C++)。

标签: c++ syntax grammar


【解决方案1】:

我个人认为最好的方法是不要使用这种复杂的声明并使用typedefusing(类型别名)来明确意图:

int *f(int *p, int a)
{
    return p + a;
}

using ProgressPointerFunPtr = int (*f)(int *p, int a);
ProgressPointerFunPtr fp()
{
    return f;
}

这样更容易阅读,也更清楚代码在做什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多