Я пишу небольшую программу для решения Project Euler Problem 21, и я тестировал ранние части моего кода, когда сталкивался с необъяснимой внутренней ошибкой компилятора. Я был бы признателен за любые советы о том, как перезаписать мою программу, чтобы избежать такой ошибки.g ++ Внутренняя ошибка компилятора в небольшой программе
Вот мои сборки команды и параметры компилятора:
g++ -std=c++11 -O2 -Wall -o "pe_021" "pe_021.cc"
Вот ошибка, которую я получаю:
Internal compiler error: Error reporting routines re-entered.
Compilation failed.
Вот мой код:
#include <array>
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const unsigned int N = 10000; //look for amicable numbers smaller than N
vector<unsigned int> list_of_primes;
vector<unsigned int[2]> prime_factorize(unsigned int);
int main(int argc, char **argv)
{
//import a list of primes
ifstream ifs ("primes_10000.txt");
for (unsigned int index = 0; index < N; index++) {
string prime_number;
getline(ifs, prime_number);
list_of_primes.push_back(stoi(prime_number));
}
ifs.close();
//test prime factorization function by prime factorizing 12
vector<unsigned int[2]> prime_factorization = prime_factorize(12);
for(unsigned int (&prime_and_exponent)[2] : prime_factorization) {
cout << prime_and_exponent[0] << ", " << prime_and_exponent[1] << endl;
}
return 0;
}
vector<unsigned int[2]> prime_factorize(unsigned int number)
{
vector<unsigned int[2]> prime_factorization;
for(unsigned int index = 1; index < list_of_primes.size(); index++) {
if(number % list_of_primes[index] == 0) {
unsigned int prime_and_exponent[2] = {list_of_primes[index], 1};
prime_factorization.push_back(prime_and_exponent);
number /= list_of_primes[index];
while(number % list_of_primes[index] == 0) {
prime_factorization.back()[1]++;
number /= list_of_primes[index];
}
}
if(number == 1) {
break;
}
}
return prime_factorization;
}
попробуйте прокомментировать материал, пока он не будет работать. если вы не можете сначала попытаться обновить свой компилятор, тогда сделайте это. иначе мало что можно сделать здесь. – PlasmaHH
Слишком много проблем, его немного сложно выколоть каждую ошибку. – P0W