我有一些用C ++编写的简单代码(见下文),效果很好,可以在Microsoft Visual Studio中成功调试。
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <cmath>
#include <map>
#include <set>
#include <algorithm>
#include <stdlib.h>
#include <iomanip>
using namespace std;
class Rational {
private:
int numerator;
int denominator;
public:
Rational() {
numerator = 0;
denominator = 1;
};
Rational(int p, int q) {
int divider = find_common_divider(abs(p), abs(q));
p = p / divider;
q = q / divider;
if ((p < 0) && (q < 0)) {
p = abs(p);
q = abs(q);
}
else if ((p > 0) && (q < 0)) {
p = -p;
q = abs(q);
}
if (p == 0)
q = 1;
numerator = p;
denominator = q;
};
int Numerator() const {
return numerator;
};
int Denominator() const {
return denominator;
};
int find_common_divider(int N1, int N2) {
while ((N1 > 0) && (N2 > 0)) {
if (N1 > N2)
N1 %= N2;
else
N2 %= N1;
}
return N1 + N2;
};
};
int main() {
{
const Rational r(3, 10);
if (r.Numerator() != 3 || r.Denominator() != 10) {
cout << "Rational(3, 10) != 3/10" << endl;
return 1;
}
}
{
const Rational r(8, 12);
if (r.Numerator() != 2 || r.Denominator() != 3) {
cout << "Rational(8, 12) != 2/3" << endl;
return 2;
}
}
{
const Rational r(-4, 6);
if (r.Numerator() != -2 || r.Denominator() != 3) {
cout << "Rational(-4, 6) != -2/3" << endl;
return 3;
}
}
{
const Rational r(4, -6);
if (r.Numerator() != -2 || r.Denominator() != 3) {
cout << "Rational(4, -6) != -2/3" << endl;
return 3;
}
}
{
const Rational r(0, 15);
if (r.Numerator() != 0 || r.Denominator() != 1) {
cout << "Rational(0, 15) != 0/1" << endl;
return 4;
}
}
{
const Rational defaultConstructed;
if (defaultConstructed.Numerator() != 0 || defaultConstructed.Denominator() != 1) {
cout << "Rational() != 0/1" << endl;
return 5;
}
}
cout << "OK" << endl;
return 0;
}
但是当我从行开始在VSCode(UBUNTU 18.04)中调试时 {(1)}在main()中,并“逐步”进入
const Rational r(3, 10)
调试器给出异常“无法打开'abs.c':无法读取文件'/build/glibc-OTsEL5/glibc-2.27/stdlib/abs.c”(错误:无法解析不存在的文件'/ build / glibc-OTsEL5 / glibc-2.27 / stdlib / abs.c')。”
Microsoft Visual Studio中不存在该异常,调试器转到函数“ find_common_divider”。
我的VSCode有什么问题?
答案 0 :(得分:2)
Visual Studio代码没有任何问题,您根本没有abs
的源代码,因此无法介入。忽略错误,点击step out
返回您的代码。