我有这个代码:
#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++23。因此,标题
_GLIBCXX_HAVE_STACKTRACE
中检查的 <stacktrace>
未设置。