Для компиляции моего кода C ++ я использую флаг -W
, который вызывает предупреждение:
предупреждение: сравнение выражения без знака <0 всегда ложно </p>
Я считаю, что это считалось ошибкой и было исправлено в версии 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: предупреждение: сравнение беззнакового выражения <0 всегда ложно </p>
Как я могу предотвратить появление этих предупреждений?Я не хочу снимать флаг -W
.