Прото "Многократное объявление i" на Solaris - PullRequest
0 голосов
/ 11 ноября 2011

Я пытаюсь создать код на С ++, использующий cc-файл protobuf, сгенерированный из прото-файла в Solaris, но я получаю сообщение об ошибке «Множественное объявление для i».

Есть ли обходной путь, заставляющий proto не генерировать множественные объявления "i" или флаг компилятора в CC, чтобы игнорировать это?

Сгенерированный код по протоколу:

 // repeated double Prices = 22;
  for (int i = 0; i < this->prices_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(
      22, this->prices(i), output);
  }

  // repeated double Yields = 23;
  for (int i = 0; i < this->yields_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(
      23, this->yields(i), output);
  }

Это вызывает ошибку.

Спасибо, Богдан

Ответы [ 2 ]

2 голосов
/ 11 ноября 2011

Похоже, что компилятор ожидает предстандартный C ++.Согласно документации это произойдет, если вы укажете -compat или -compat=4 в командной строке компилятора, поэтому убедитесь, что вы этого не делаете.

1 голос
/ 11 ноября 2011

Какую версию компилятора вы используете? Если вы укажете -features=localfor, у вас должно быть правильное поведение, но, по крайней мере, в текущих версиях компилятора это будет по умолчанию, если вы не укажете -compat=4. (Но если вам нужен -compat=4 по другим причинам, вы все равно можете указать -features=localfor.)

...