gcc-12/13:仍然找不到 std::stacktrace

问题描述 投票:0回答:1

我有这个代码:

#include <stacktrace>
#include <iostream>

int nested_func(int c)
{
    std::cout << std::stacktrace::current() << '\n';
    return c + 1;
}

int func(int b)
{
    return nested_func(b + 1);
}
 
int main()
{
    std::cout << func(777);
}

我在ubuntu22.04上按照以下步骤安装了gcc-12和gcc-13

sudo apt install gcc-13 g++-13
sudo apt install gcc-12 g++-12

然后我尝试编译代码:

g++-13 -std=c++23 -lstdc++_libbacktrace test.cpp

但是 gcc-12 和 gcc-13 都出现以下错误

test.cpp: In function ‘int nested_func(int)’:
test.cpp:6:23: error: ‘std::stacktrace’ has not been declared
    6 |     std::cout << std::stacktrace::current() << '\n';
      |      
c++ gcc ubuntu-22.04 c++23
1个回答
0
投票

如评论中所述,这可能是因为您的发行版尚未完全支持 c++23。因此,标题

_GLIBCXX_HAVE_STACKTRACE
中检查的
<stacktrace>
未设置。

© www.soinside.com 2019 - 2024. All rights reserved.