es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El compilador clang++ se queda colgado con -std=c++17 -O3.

Estoy utilizando esta línea de comandos para compilar mi programa.

clang++ -std=c++17 -O3 main.cpp -o main

Hace 20 minutos que comencé el compilador y sigue bloqueado. Terminé el compilador y traté de compilarlo nuevamente, pero sigue bloqueado. Si uso la misma línea de comandos, pero sin el -O3, el compilador se completa instantáneamente, pero con el -O3 se bloquea.

El código que está compilando es relativamente simple, sin errores. ¿Qué está sucediendo?

“`c++
#include <ctime> // para time()

#include <cstdlib> // para srand(), rand(), size_t, EXIT_SUCCESS

#include <iostream>

#include <string>

#include <vector>

using std::cout;
using std::endl;
using std::string;
using std::vector;

int main()
{
vector<string> messages;
messages.push_back(string("Blessed are those who are persecuted because of righteousness, for theirs is the kingdom of heaven."));
messages.push_back(string("Let the little children come to me, and do not hinder them, for the kingdom of heaven belongs to such as these."));

<pre><code>/* Literalmente 10000 citas más de la Biblia. */

srand(time(NULL));

cout << messages[ rand() % messages.size() ] << endl;

return EXIT_SUCCESS;
</code></pre>

}
“`

¿Qué está sucediendo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La opción -O3 se utiliza para habilitar un nivel más alto de optimización del código por parte del compilador. Esta optimización puede tardar más tiempo en completarse, especialmente en códigos complejos o grandes. En este caso, dado que el código es relativamente simple, es posible que el compilador esté intentando optimizar el código de una manera que está provocando un bucle infinito o un bloqueo, lo que hace que el compilador se quede colgado.

    Una posible solución es intentar con un nivel inferior de optimización, como -O2 o -O1, y ver si el compilador puede completar la compilación. Otra posible solución es revisar el código e intentar identificar cualquier parte que pueda estar causando el problema de optimización y modificarlo en consecuencia.

Comments are closed.