Uso del codice per segnalare la durata di un'attività utilizzando std :: chrono :: high_resolution_clock ... parte di C++ 0x.C++ 0x compila ma errori di editor di eclissi anche con -gnu ++ 0x discovery
Posso compilare con successo le caratteristiche di C++ 0x in eclipse cdt utilizzando il flag -gnu ++ 0x. Nonostante la compilazione con successo, l'editor sembrava inconsapevole di C++ 0x e mostrava errori per qualsiasi caratteristica di C++ 0x nel mio codice. Ho risolto questo aggiungendo il flag -gnu ++ 0x alle opzioni di ricerca del mio progetto. Nota: Non mostra risolto fino a che fare un'altra compilazione e ricostruire l'indice ...
-E -P -v -dD "$ {} plugin_state_location /specs.cpp" -std = gnu ++ 0x
ho ancora un ultimo errore editore che non riesco liberarsi di "Symbol 'duration_cast' non poteva essere risolto" (ho avuto un pic ma i nuovi utenti non possono postare foto)
Chiunque hai qualche idea su come risolvere questo problema? Ecco il codice:
#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
possibile duplicato del [costruire C++ 0x presenta con Eclipse] (http://stackoverflow.com/q/8564544/636019) – ildjarn
Nel mio caso, ho aggiunto "-std = C++ 0x" in Project -> Properties -> C++ - Build [Settings] -> G ++ Compiler [miscellanous] -> Altri flag. Ho controllato e c'è un solo file 'chrono' nei percorsi di inclusione. Quando apri la dichiarazione, ad es. premere F3 su, il file corretto viene aperto e ha una definizione per duration_cast. Ho anche notato che il completamento automatico non vede 'duration_cast' ma vede tutto il resto che mi serve dall'intestazione 'chrono'. –
stratman
Quale versione di Eclipse/CDT stai usando? – ildjarn