скомпилируйте rapidxml под Linux с помощью g ++ - PullRequest
2 голосов
/ 30 сентября 2010

Следующая простая программа не может быть скомпилирована с помощью gcc 4.4.3

#include "rapidxml.hpp"
#include "rapidxml_utils.hpp"
#include "rapidxml_print.hpp"
#include "rapidxml_iterators.hpp"

int main()
{
  return 0;
}

Компиляция выдает следующие ошибки:

rapidxml_iterators.hpp:21: error: expected nested-name-specifier
rapidxml_iterators.hpp:21: error: invalid declarator before ‘value_type’
rapidxml_iterators.hpp:22: error: expected nested-name-specifier
rapidxml_iterators.hpp:22: error: invalid declarator before ‘&’ token
..........

Что я делаю не так?

Ответы [ 3 ]

1 голос
/ 04 июля 2011

У rapidxml_iterators.hpp есть проблемы с этим. Вы должны изменить это на это:

typedef xml_node<Ch> value_type;
typedef xml_node<Ch> &reference;
typedef xml_node<Ch> *pointer;
typedef typename std::ptrdiff_t difference_type;
typedef typename std::bidirectional_iterator_tag iterator_category;
1 голос
/ 15 декабря 2010

Эти ошибки вызваны заголовком rapidxml_iterators.hpp.Кажется, что включение этого заголовка не является обязательным для регулярного анализа XML.Очевидно, что итераторы, определенные там, на самом деле не пригодны для использования.Это может быть что-то еще в стадии разработки.Смотри также здесь .

0 голосов
/ 02 июля 2013

Простое решение для простого случая

Вам на самом деле не нужно rapidxml_iterators.hpp, но вы проверяли работоспособность, верно?

Решение: только #include заголовки, которые вам действительно нужны.

Это общее правило. #include Все равно, что есть слишком много: ситуация становится жирной и медленной.

Для сравнения, в том числе только то, что вам нужно:

  • информирует вас о фактической зависимости кода,
  • помогает защитить вас от загрязнения пространства имен, случайных столкновений имен, а иногда даже проблем с переносимостью
  • предупреждает вас, когда вы начинаете связывать вещи, которые должны храниться отдельно.

Если вам действительно нужно rapidxml_iterators.hpp

На данный момент проблема, вероятно, решена. Если вам действительно нужен rapidxml_iterators.hpp, он действительно глючит (похоже, эта конкретная ошибка Microsoftism ). Об этой и других проблемах было сообщено в феврале 2010 года по номеру http://sourceforge.net/p/rapidxml/bugs/10/ с предлагаемыми решениями, отличными от @ user437634, которые все еще открыты и присутствуют в текущем выпуске на июль 2013 года.

...