Tôi sử dụng một số mã để báo cáo thời lượng của tác vụ bằng cách sử dụng std :: chrono :: high_resolution_clock ... một phần của C++ 0x.C++ 0x biên dịch nhưng lỗi biên tập nhật thực ngay cả với -gnu ++ 0x discovery
Tôi có thể biên dịch thành công các tính năng C++ 0x trong đĩa CD eclipse bằng cờ -gnu ++ 0x. Mặc dù biên dịch thành công, trình chỉnh sửa dường như không biết C++ 0x tức là nó hiển thị lỗi cho bất kỳ tính năng C++ 0x nào trong mã của tôi. Tôi đã giải quyết điều đó bằng cách thêm cờ -gnu ++ 0x vào các tùy chọn khám phá dự án của tôi. Lưu ý: không hiển thị cố định cho đến khi bạn thực hiện một biên dịch khác và xây dựng lại chỉ mục ...
-E -P -v -dD "$ {plugin_state_location} /specs.cpp" -std = gnu ++ 0x
tôi vẫn có một lỗi biên tập cuối cùng mà tôi không thể thoát khỏi bản thân mình của "Symbol 'duration_cast' không thể được giải quyết" (tôi đã có một pic nhưng người dùng mới không thể gửi bức ảnh)
Bất cứ ai có ý tưởng nào về cách sửa lỗi này không? Đây là mã:
#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
thể trùng lặp của [Build C++ 0x tính năng với Eclipse] (http://stackoverflow.com/q/8564544/636019) – ildjarn
Trong trường hợp của tôi, tôi đã thêm "-std = C++ 0x" vào Project -> Properties -> C++ - Xây dựng [Settings] -> G ++ Compiler [miscellanous] -> Cờ khác. Tôi đã kiểm tra và chỉ có một tệp 'chrono' trong các đường dẫn bao gồm. Khi mở tờ khai, ví dụ: nhấn F3 trên, tệp chính xác được mở và có định nghĩa cho duration_cast. Tôi cũng lưu ý rằng tự động hoàn thành không thấy 'duration_cast' nhưng thấy mọi thứ khác tôi cần từ tiêu đề 'chrono'. –
stratman
Bạn đang sử dụng phiên bản Eclipse/CDT nào? – ildjarn