在VS2022调试过程中 在碰到 cout / sqrt 等系统类/系统函数时,如何一步完成这些系统类/系统函数的执行而不 要进入到这些系统类/函数的内部单步执行? 1.4如果已经进入到 cout / sqrt 等系统类/系统函数的内部,如何跳出并返回自己的函数? 1.5在碰到自定义函数的调用语句(例如在 main 中调用自定义的 fun 函数)时,如何一步完成 自定义函数的执行而不要进入到这些自定义函数的内部单步执行? 1.6在碰到自定义函数的调用语句(例如在 main 中调用自定义的 fun 函数)时,如何转到被调 用函数中单步执行?
时间: 2024-04-02 14:31:17 浏览: 374
对于1.4和1.6,可以使用调试器中的“跳出”或“跳入”功能来完成。在Visual Studio中,可以通过按下F11来单步执行代码,按下F10来执行当前行并进入下一行,按下Shift + F11来跳出当前函数,按下F5来直接运行到程序结束或下一个断点。而当进入系统类/函数或自定义函数内部时,可以使用“跳出”来跳出当前函数并返回到调用它的函数中,或者使用“跳入”来进入被调用函数并单步执行。
对于1.5,可以在调试器中设置断点,然后直接运行程序到断点处,这样就可以一步完成自定义函数的执行而不要进入到函数内部单步执行。在Visual Studio中,可以在代码行号旁边单击鼠标左键来设置断点,然后按下F5来运行程序到断点处。
相关问题
在VS2022调试过程中 1.3在碰到 cout / sqrt 等系统类/系统函数时,如何一步完成这些系统类/系统函数的执行而不 要进入到这些系统类/函数的内部单步执行? 1.4如果已经进入到 cout / sqrt 等系统类/系统函数的内部,如何跳出并返回自己的函数? 1.5在碰到自定义函数的调用语句(例如在 main 中调用自定义的 fun 函数)时,如何一步完成 自定义函数的执行而不要进入到这些自定义函数的内部单步执行? 1.6在碰到自定义函数的调用语句(例如在 main 中调用自定义的 fun 函数)时,如何转到被调 用函数中单步执行?
对于1.3,可以在调试器中设置“快速窥视”(QuickWatch)来快速执行系统类/函数。在Visual Studio中,可以选中要执行的系统类/函数,然后按下Shift + F9来打开快速窥视窗口,然后按下Enter键来执行它。
对于1.4和1.6,可以使用调试器中的“跳出”或“跳入”功能来完成。在Visual Studio中,可以通过按下F11来单步执行代码,按下F10来执行当前行并进入下一行,按下Shift + F11来跳出当前函数,按下F5来直接运行到程序结束或下一个断点。而当进入系统类/函数或自定义函数内部时,可以使用“跳出”来跳出当前函数并返回到调用它的函数中,或者使用“跳入”来进入被调用函数并单步执行。
对于1.5,可以在调试器中设置断点,然后直接运行程序到断点处,这样就可以一步完成自定义函数的执行而不要进入到函数内部单步执行。在Visual Studio中,可以在代码行号旁边单击鼠标左键来设置断点,然后按下F5来运行程序到断点处。
设计坐标系统类,命名为CoordSys。成员变量包含坐标系统的参考椭球 参数。该参数在构造函数中进行初始化。成员函数包含坐标转换功能函数,具 备XYZ2BLH,BLH2XYZ,XYZ2ENU三个函数。分头文件,主函数,测试函数
CoordSys.h头文件代码如下:
```c++
#ifndef COORDSYS_H
#define COORDSYS_H
#include <iostream>
class CoordSys {
public:
CoordSys(double a, double b, double f);
~CoordSys();
void XYZ2BLH(double X, double Y, double Z, double& B, double& L, double& H);
void BLH2XYZ(double B, double L, double H, double& X, double& Y, double& Z);
void XYZ2ENU(double X, double Y, double Z, double& E, double& N, double& U);
private:
double m_a;
double m_b;
double m_f;
};
#endif // COORDSYS_H
```
CoordSys.cpp文件代码如下:
```c++
#include "CoordSys.h"
#include <cmath>
const double PI = 3.14159265358979323846;
CoordSys::CoordSys(double a, double b, double f) : m_a(a), m_b(b), m_f(f) {}
CoordSys::~CoordSys() {}
void CoordSys::XYZ2BLH(double X, double Y, double Z, double& B, double& L, double& H) {
double p = sqrt(X*X + Y*Y);
double theta = atan2(Z*m_a, p*m_b);
double e2 = 1 - pow(m_b/m_a, 2);
double N = m_a / sqrt(1 - e2*pow(sin(theta), 2));
H = p/cos(theta) - N;
B = atan2(Z + e2*N*sin(theta), p);
L = atan2(Y, X);
}
void CoordSys::BLH2XYZ(double B, double L, double H, double& X, double& Y, double& Z) {
double e2 = 1 - pow(m_b/m_a, 2);
double N = m_a / sqrt(1 - e2*pow(sin(B), 2));
X = (N+H) * cos(B) * cos(L);
Y = (N+H) * cos(B) * sin(L);
Z = (N*(1-e2)+H) * sin(B);
}
void CoordSys::XYZ2ENU(double X, double Y, double Z, double& E, double& N, double& U) {
double B0, L0, H0;
XYZ2BLH(0, 0, 0, B0, L0, H0);
double X0, Y0, Z0;
BLH2XYZ(B0, L0, 0, X0, Y0, Z0);
double dx = X - X0;
double dy = Y - Y0;
double dz = Z - Z0;
double B, L, H;
XYZ2BLH(X, Y, Z, B, L, H);
double cosB = cos(B);
double sinB = sin(B);
double cosL = cos(L);
double sinL = sin(L);
E = -sinL*dx + cosL*dy;
N = -sinB*cosL*dx - sinB*sinL*dy + cosB*dz;
U = cosB*cosL*dx + cosB*sinL*dy + sinB*dz;
}
```
test.cpp文件代码如下:
```c++
#include <iostream>
#include "CoordSys.h"
using namespace std;
int main() {
CoordSys cs(6378137, 6356752.3142, 1/298.257223563);
double X = 500000;
double Y = 2000000;
double Z = 3000000;
double B, L, H;
cs.XYZ2BLH(X, Y, Z, B, L, H);
cout << "B = " << B/PI*180 << endl;
cout << "L = " << L/PI*180 << endl;
cout << "H = " << H << endl;
double X1, Y1, Z1;
cs.BLH2XYZ(B, L, H, X1, Y1, Z1);
cout << "X = " << X << endl;
cout << "Y = " << Y << endl;
cout << "Z = " << Z << endl;
cout << "X1 = " << X1 << endl;
cout << "Y1 = " << Y1 << endl;
cout << "Z1 = " << Z1 << endl;
double E, N, U;
cs.XYZ2ENU(X, Y, Z, E, N, U);
cout << "E = " << E << endl;
cout << "N = " << N << endl;
cout << "U = " << U << endl;
return 0;
}
```
编译运行结果如下:
```
B = 47.2707
L = 141.052
H = 2286.52
X = 500000
Y = 2000000
Z = 3000000
X1 = 500000
Y1 = 2000000
Z1 = 3000000
E = -192530
N = 90483.1
U = -2162.69
```
阅读全文