开发平台(Platform): (Ex: Win10, Linux, ...)
Linux
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC
问题(Question):
最近除错时发现 gdb 好像无法解析 auto 的类别成员函式回传值
一律只会印出 void
而且有确定该函式没被优化掉
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
简单例子如下:
#include <cstdio>
struct S {
auto f1(int v) { return v; }
int f2(int v) { return v; }
};
auto f3(int v) { return v; }
int main() {
S s;
printf("%d %d %d\n", s.f1(1), s.f2(1), f3(1)); // 1 1 1
}
使用 gdb 印出如下:
(gdb) p s.f1(1)
$1 = void
(gdb) p s.f2(1)
$2 = 1
(gdb) p f3(1)
$3 = 1
从结果看来一般函式 f3() 用 auto 回传就没这个问题
有人知道原因吗?