Tema: mingw-w64
Ver Mensaje Individual
  #7 (permalink)  
Antiguo 26/11/2014, 11:06
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: mingw-w64

Cita:
El compilador de Microsoft funciona bastante bien... y también se puede conseguir de forma gratuita, ya sea desacargándolo directamente con el SDK de Windows o mediante la correspondiente versión express de Visual Studio.

No digo que sea mejor que MinGW, pero es el que tengo que usar en el trabajo y, de momento, no tengo quejas.

Quizás podría decir en su contra que es tarda más tiempo en adaptarse al estándar que MinGW y que la opción de MinGW facilita el desarrollo en "cross compiling"... tampoco puedo hacer una comparativa adecuada porque yo no tengo alternativa, mi desarrollo se compila con msvc sí o sí :(
Estoy seguro que el compilador de microsoft tiene que ser muy bueno, pero me da miedo jajaja
A ver si un dia lo pongo a probar =)
Gracias por la respuesta. =)


Cita:
Iniciado por leosansan Ver Mensaje
¿ Y has tenido que desistanlarla previamente el Code::Blocks o la has instalado sobre la existente sin desistalación previa ?.

¡¡¡Saluditos!!!

Hola leo.
A ver.. Siempre descargava codeblocks con el mingw que viene por defecto. No es que sea malo, es que un bello dia entre en un tema de hilos al que eferion comentaba una solucion.
Yo como un programador novato que soy entre y pedi si alguien me podia dar un par de ejemplos. Eferion como siempre es un gran maestro me proporciono este código:
Código C++:
Ver original
  1. #include <iostream>
  2. #include <thread>         // std::thread
  3. #include <chrono>
  4. #include <conio.h>
  5. using namespace std;
  6.  
  7. class DataManager {
  8.     public:
  9.    
  10.         DataManager( ) = default;
  11.        
  12.         DataManager ( const DataManager& ) = delete;
  13.        
  14.         ~DataManager( ) = default;
  15.        
  16.         void Run( ) {
  17.             int temp_number = 0;
  18.            
  19.             while ( true ) {
  20.                 char c = getch( );
  21.                 _withData = true;
  22.                
  23.                 if ( c != '\n' && c != '\r' ) {
  24.                     std::cout << c;
  25.                     temp_number *= 10;
  26.                     temp_number += c - '0';
  27.                 } else {
  28.                     std::cout << std::endl;
  29.                     _number = temp_number;
  30.                     break;
  31.                 }
  32.             }
  33.         }
  34.        
  35.         bool WithData( ) const
  36.         { return _withData; }
  37.        
  38.         int Number( ) const
  39.         { return _number; }
  40.        
  41.         const DataManager& operator= ( const DataManager& ) = delete;
  42.        
  43.     private:
  44.    
  45.         bool _withData = false;
  46.         int _number = 0;
  47. };
  48.  
  49. class Timer {
  50.     public:
  51.         using milliseconds = std::chrono::milliseconds;
  52.        
  53.         Timer( ) {
  54.             Reset( );
  55.         }
  56.        
  57.         Timer ( const Timer& ) = delete;
  58.        
  59.         ~Timer( ) = default;
  60.        
  61.         void Reset( ) {
  62.             _start = std::chrono::high_resolution_clock::now( );
  63.         }
  64.        
  65.         milliseconds Elapsed( ) const {
  66.             return std::chrono::duration_cast< milliseconds > ( std::chrono::high_resolution_clock::now( ) - _start );
  67.         }
  68.        
  69.         const Timer& operator= ( const Timer& ) = delete;
  70.        
  71.     private:
  72.         std::chrono::high_resolution_clock::time_point _start;
  73. };
  74.  
  75. int main( ) {
  76.     std::cout << "Introduce un numero." << std::endl;
  77.     std::cout << "Tienes 5 segundos para empezar" << std::endl;
  78.    
  79.     DataManager manager;
  80.    
  81.     std::thread thread { [] ( DataManager * mgr ) { mgr->Run( ); }, &manager };
  82.    
  83.     Timer timer;
  84.    
  85.     while ( timer.Elapsed( ) < std::chrono::seconds { 5 } ) {
  86.         if ( manager.WithData( ) )
  87.             break;
  88.     }
  89.    
  90.     if ( !manager.WithData( ) )
  91.         thread.detach( );
  92.     else
  93.         thread.join( );
  94.        
  95.     if ( manager.WithData( ) )
  96.         std::cout << "Has introducido el numero: " << manager.Number( ) << std::endl;
  97.     else
  98.         std::cout << "No has introducido ningun numero." << std::endl;
  99. }
...que por cierto aun estoy en ello, pero a mi as veces las cosas se toman mas tiempo del normal. XDDD

Lo que pasa es que al compilar, me doy cuenta de que la libreria thread no viene.
entonces pregunte por que seria y me han dicho que era por la version de mingw o no me acuerdo muy bien.
Me habian recomendado por entonces QT al que lo veo muy complicado. No consegui hacer funcionar. =( De consultillas por la red encontre ese instalador al que decian "era de lo mejor" y la verdad es que me parece genial.
Pero ya sabes que pasa con los ignorantes... Que somos felices en nuestra ignorancia por no saber si hay algo mejor. jejeje

Ahora descargo codeblocks sin compilador y instalo ese que dije. Pongo el .-std=C++11 y funciona muy bien el ejemplo que me paso eferion.
Ademas nada de lo que hacia anteriormente lo veo afectado, por eso me parece bueno. Pero en fin...

Gracias por todos por los comentarios.

PD: Sobre lo de pagar lo veo dificil ya que no gano nada con eso, solo hago por que me gusta y estoy en paro hace muuucho. =(