__PRETTY_FUNCTION__:返回类型是否包含括号?

时间:2015-04-21 15:46:19

标签: c++ gcc macros

我正在考虑this solution来减少__PRETTY_FUNCTION__的输出。该解决方案删除了​​返回类型,参数和修饰符。

我想知道以下修改是否适用于任何情况:

inline std::string methodName(const std::string& prettyFunction) {
    size_t parenthesis = prettyFunction.find("("); //Then I can use parenthesis index as end for my string
    size_t begin = prettyFunction.rfind(" ",parenthesis) + 1;
    (...)
}

即,我想了解返回类型(或函数名左侧的__PRETTY_FUNCTION__返回的字符串中的任何其他内容)是否包含开括号的可能性(


我在a different way中实施了该方法。

1 个答案:

答案 0 :(得分:2)

是的,可以有其他括号。这是一个例子:

#include <iostream>

using fptr = void(*)();

fptr func() {
    std::cout << __PRETTY_FUNCTION__ << '\n';
    return nullptr;
}

int main()
{
    func();
}

使用g ++ -std = c ++ 14的输出是:

void (* func())()