【问题标题】:__PRETTY_FUNCTION__: Can a return type contain parentheses?__PRETTY_FUNCTION__:返回类型可以包含括号吗?
【发布时间】:2015-04-21 15:46:19
【问题描述】:

我正在考虑使用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中实现了方法。

【问题讨论】:

  • void (*func())() 返回一个函数指针。它会破坏你的代码吗?
  • @Quentin 是的,确实如此 :) 虽然这不应该出现在代码中,但我将不得不记录

标签: c++ gcc macros


【解决方案1】:

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

#include <iostream>

using fptr = void(*)();

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

int main()
{
    func();
}

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

void (* func())()

【讨论】:

  • 谢谢!我认为这种情况不应该出现在我正在处理的代码中。如果您想到任何其他情况,请告诉我。无论如何,我都会尝试创建该函数的通用版本。
猜你喜欢
  • 2017-06-13
  • 1970-01-01
  • 1970-01-01
  • 2021-09-13
  • 1970-01-01
  • 2019-11-30
  • 1970-01-01
  • 1970-01-01
  • 2015-10-21
相关资源
最近更新 更多