C ++: ifstream getline проблема с кросс-компиляцией в дистрибутив OpenWRT

Я пытаюсь скомпилировать простой код C ++ внутри моего дистрибутива OpenWRT, но у меня есть ошибка с GetLine инструкция.
Вот снимок моего кода:

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <string>
#include <iostream>
#include <sstream>
#include <fstream>
#include <algorithm>
#include <sys/stat.h>
...

ifstream infile(MODEL);
if (infile.fail())
return;
getline(infile, model);

...

Я получаю такое предупреждение (я компилирую с флагом -Werror)

In file included from /home/nino/workspace/fmrepo/fm-mt762x/buildroot/staging_dir/target-mipsel_1004kc+dsp_uClibc-0.9.33.2/usr/include/uClibc++/iostream:30:0,
from fmsnmpwalk.cpp:5:
/home/nino/workspace/fmrepo/fm-mt762x/buildroot/staging_dir/target-mipsel_1004kc+dsp_uClibc-0.9.33.2/usr/include/uClibc++/string_iostream: In instantiation of 'std::basic_istream<charT, traits>& std::getline(std::basic_istream<charT, traits>&, std::basic_string<Ch, Tr, A>&, charT) [with charT = char; traits = std::char_traits<char>; Allocator = std::allocator<char>]':
/home/nino/workspace/fmrepo/fm-mt762x/buildroot/staging_dir/target-mipsel_1004kc+dsp_uClibc-0.9.33.2/usr/include/uClibc++/string_iostream:114:16:   required from 'std::basic_istream<charT, traits>& std::getline(std::basic_istream<charT, traits>&, std::basic_string<Ch, Tr, A>&) [with charT = char; traits = std::char_traits<char>; Allocator = std::allocator<char>]'
fmsnmpwalk.cpp:47:23:   required from here
/home/nino/workspace/fmrepo/fm-mt762x/buildroot/staging_dir/target-mipsel_1004kc+dsp_uClibc-0.9.33.2/usr/include/uClibc++/string_iostream:97:11: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
for(i=0;i<n;++i){
^
cc1plus: all warnings being treated as errors

Я не могу понять, в чем проблема.
На моем дистрибутиве OpenWRT я использую gcc 5.x а также uClibc-0.9.33.2.
Любая помощь приветствуется. Спасибо!

-1

Решение

Как говорит ошибка:

ошибка: сравнение между целочисленными выражениями со знаком и без знака [-Werror = знак-сравнение]

Итак, у вас есть этот код for(i=0;i<n;++i){ где-то в вашем uClibc ++ (а именно в std::getline), где i а также n имеют разные признаки (возможно, i является int в то время как n представляет некоторую длину и является size_t, который не подписан).

Вы можете просто отключить это предупреждение с чем-то вроде -Wno-sign-compare,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]