我有这个 C++ 程序,当我运行调试器时,它无法显示
f1
的返回值。
#include <iostream>
#include <vector>
#include <string>
using namespace std;
string f1(vector<int> v) {
return "this takes in a vector\n";
}
string f2(int x[]) {
return "this takes in an array\n";
}
int main() {
vector<int> vec = {1, 2, 3};
string x = f1(vec);
cout << x;
int arr[] = {1, 2, 3};
string y = f2(arr);
cout << y;
}
当我运行程序时,
f1
和f2
都按预期执行,并且我看到了正确的输出。
但是,当我调试程序时:
调试器评估
f2(arr)
的返回值。f1(vec)
的返回值。
直接将函数设置为监视变量可能不是您想要的行为。在大多数情况下,将监视变量设置为存储返回值的字符串(在本例中为
x
和 y
字符串)将是您想要的。
这确实是简短的答案。长答案涉及了解 C++ 编译器。
至于为什么它们在监视窗口中显示不同,这很可能是因为函数的编译方式不同: