Uso un código para informar la duración de una tarea usando std :: chrono :: high_resolution_clock ... parte de C++ 0x.C++ 0x compila pero eclipse errores de editor incluso con -gnu ++ 0x descubrimiento
Puedo compilar con éxito las características de C++ 0x en eclipse cdt usando el indicador -gnu ++ 0x. Aunque compiló con éxito, el editor parecía no estar al tanto de C++ 0x, es decir, mostraba errores para cualquier característica de C++ 0x en mi código. Lo resolví agregando el indicador -gnu ++ 0x a mis opciones de descubrimiento de proyectos. Nota: No se muestra fijado hasta que lo haga otra compilación y reconstruir el índice ...
-E -v -P -dd "$ {} plugin_state_location /specs.cpp" -std = gnu ++ 0x
todavía tengo un error último editor que no puedo librarme de "símbolo 'duration_cast' no se pudo resolver" (que tenía una foto pero los nuevos usuarios no pueden publicar fotos)
Cualquiera ¿Tiene alguna idea sobre cómo solucionar esto? Aquí está el código:
#ifndef _scoped_timer_h_
#define _scoped_timer_h_
#include <iostream>
#include <chrono>
#include "boost/noncopyable.hpp"
#include "boost/format.hpp"
using namespace std::chrono;
// Utility class for timing and logging rates
// (ie "things-per-second").
// NB _any_ destructor invokation (including early return
// from a function or exception throw) will trigger an
// output which will assume that whatever is being measured
// has completed successfully and fully.
class scoped_timer : boost::noncopyable
{
public:
scoped_timer(
const std::string& what,
const std::string& units,
double n
)
:_what(what)
,_units(units)
,_how_many(n)
,_start(high_resolution_clock::now())
{}
~scoped_timer() {
high_resolution_clock::time_point stop = high_resolution_clock::now();
const double t = 1e-9 * duration_cast<nanoseconds>(stop-_start).count();
std::cout << (
boost::format(
"%1%: %|2$-5.3g| %|3$|/s (%|4$-5.3g|s)"
) % _what % (_how_many/t) % _units % t
) << std::endl;
}
private:
const std::string _what;
const std::string _units;
const double _how_many;
const high_resolution_clock::time_point _start;
};
#endif
posible duplicado de [Preparar C++ 0x cuenta con Eclipse] (http://stackoverflow.com/q/8564544/636019) – ildjarn
En mi caso, he añadido "-std = C++ 0x" al Proyecto -> Propiedades -> C++ - Construir [Configuraciones] -> Compilador G ++ [misceláneo] -> Otras banderas. Lo he verificado y solo hay un archivo 'crono' en las rutas de inclusión. Al abrir la declaración, p. presione F3 en, se abre el archivo correcto y tiene una definición para duration_cast. También observo que Autocomplete no ve 'duration_cast', pero ve todo lo demás que necesito del encabezado 'chrono'. –
stratman
¿Qué versión de Eclipse/CDT estás usando? – ildjarn