У меня есть простой код на 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) из строки const Rational r(3, 10)
в main () с "Step into" до строки
int divider = find_common_divider(abs(p), abs(q));
отладчик выдает исключение "Невозможно открыть 'abs. c': невозможно прочитать файл '/ build / glib c -OTsEL5 / glib c -2.27 / stdlib / abs. c '(Ошибка: невозможно разрешить несуществующий файл' /build/glibc-OTsEL5/glibc-2.27/stdlib/abs . c '). "
Это исключение отсутствует в Microsoft Visual Studio, и отладчик переходит к функции" find_common_divider ".
Что не так с моим VSCode?