c – g警告:无符号表达式的比较<0始终为false
要编译我的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); } } 警告我得到:
我怎么可能阻止这些警告出现?我不想删除-W标志. 解决方法
您正在测试正值是否低于0.
size_t是无符号的,因此至少为0. 这种情况永远不会发生,编译器只需删除测试就可以优化.这里的警告告诉你,因为如果有人这样做,那可能是个错误. 在你的情况下,你可能只是删除测试,它应该没问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |