開發平台(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 回傳就沒這個問題
有人知道原因嗎?