c ++ 0x компилируется, но затмевает ошибки редактора даже при обнаружении -gnu ++ 0x - PullRequest
11 голосов
/ 07 января 2012

Я использую некоторый код для сообщения о продолжительности задачи, используя std :: chrono :: high_resolution_clock ... часть c ++ 0x.

Я могу успешно скомпилировать функции c ++ 0x в eclipse cdt, используяфлаг -gnu ++ 0x.Несмотря на успешную компиляцию, редактор, похоже, не знал о c ++ 0x, то есть он отображал ошибки для любых функций c ++ 0x в моем коде.Я решил это, добавив флаг -gnu ++ 0x в параметры обнаружения моего проекта.Примечание: не отображается исправлено, пока вы не выполните другую компиляцию и не перестроите индекс ...

-E -P -v -dD "$ {plugin_state_location} /specs.cpp" -std = gnu++ 0x

У меня по-прежнему есть одна последняя ошибка редактора, из-за которой я не могу избавиться от «Символа« duration_cast »не удалось решить» (у меня была фотография, но новые пользователи не могут публиковать фотографии)

У кого-нибудь есть идеи как это исправить?Вот код:

#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

Ответы [ 2 ]

8 голосов
/ 14 апреля 2014

Для хроно в затмении вы должны добавить эти символы

_GLIBCXX_USE_C99_STDINT_TR1

и

__cplusplus = 201103L

Как их добавить:

Свойства объекта -> Общие сведения о C / C ++ -> Путь и символы -> Символы (вкладка) -> GNU C ++ -> и нажмите кнопку Добавить.

Не забудьте добавить __cplusplus со значением 201103L

3 голосов
/ 26 декабря 2012

Eclipse имеет свой собственный анализатор.Этот синтаксический анализатор не может работать с функциями c ++ 11 (C ++ 0x).Поэтому вам нужно подождать, пока поддержка c ++ 11 в анализаторе eclipse будет готова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...