C++:ifstream getline 问题交叉编译到 OpenWRT 发行版中
C++: ifstream getline issue crosscompiling into an OpenWRT distro
我正在尝试在我的自定义OpenWRT发行版中编译一个简单的C++代码,但是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。
任何帮助,不胜感激。谢谢!
正如错误所说:
错误:有符号和无符号整数表达式之间的比较 [-Werror=符号比较]
因此,您将此代码for(i=0;i<n;++i){
uClibc++中的某个位置(即在std::getline
中),其中i
和n
具有不同的符号(也许,i
是一个int
,而n
表示一些长度并且是一个无符号的size_t
)。
您可以使用类似-Wno-sign-compare
.
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 用于交叉编译和CMake的预处理器宏的单元测试
- 在Linux上使用Clang / OLLVM交叉编译helloworld Windows可执行文件时的问题
- 无法使用 aarch64-unknown-nto-qnx7.0.0-g++-5.4.0 编译器交叉编译 QNX 平台的
- 如何使用导出的函数交叉编译 DLL
- 交叉编译:特殊的交叉编译器还是只是带有选项 -march 的 gcc?
- 交叉编译时包括外部库
- 如何交叉编译C++文件
- SFML 交叉编译 for Windows on Linux.
- 使用 cmake 交叉编译 libwebsockets
- 使用cmake交叉编译gRPC
- 为什么Qt必须从源代码构建以进行交叉编译?
- 交叉编译树莓派
- Microsoft Visual Studio 2019交叉编译CMake库 - 有效,但存在SEG错误
- Jlibfprint 交叉编译
- 在Linux上交叉编译Windows应用程序时如何链接到Winsock?
- 使用 c++11 标志交叉编译 OpenWRT
- C++:ifstream getline 问题交叉编译到 OpenWRT 发行版中
- 针对OpenWRT的CMake/Linker交叉编译
- 使用OpenWRT工具链为OpenWRT Linux环境交叉编译POCO库