为了编译我的 C++ 代码,我使用-W
标志,这会导致警告:
警告:无符号表达式
我相信这被认为是一个错误并在 GCC 4.3 版本上修复,但我正在使用 GCC 4.1
这里明显有问题的代码:
void FieldGroup::generateCreateMessage (const ApiEvent::GroupData &data, omsgstream &result) const {
dblog << debug;
// Write out the data fields we care about, in the order they were specified
for (size_t index = 0; index < fields.size(); ++index) {
size_t esIndex = clsToES[index];
if (esIndex < 0 || esIndex >= data.fields.length()) {
ostringstream buf;
buf << "Invalid field " << index << " (index in ES data set " << esIndex << ", " << data.fields.length() << " fields returned)";
throw InvalidDataException (buf.str());
}
fields[index].writeData (data.fields[esIndex], result);
}
}
我收到警告:
dbtempl.cpp:在成员函数“void ECONZ::FieldGroup::generateCreateMessage(const nz::co::econz::eventServer::ApiEvent::GroupData&, ECONZ::omsgstream&) const”中:
dbtempl.cpp:480: 警告:无符号表达式
我怎样才能阻止这些警告的出现?我不想删除-W
flag.
您正在测试正值是否低于 0。
A size_t
是无符号的,所以至少为 0。
这个可以never发生这种情况,编译器通过删除测试来优化事情。此警告是为了告诉您,因为如果有人这样做,则可能是一个错误。
对于你的情况,你可能只是删除测试,应该没问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)