【发布时间】:2010-08-30 07:17:05
【问题描述】:
为了编译我的 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 标志。
【问题讨论】:
-
只是一个小评论:编译器可能有错误,但这些真的很少见。因此,当编译产生警告时,请首先检查您的代码,不要认为这是编译器的错误。
-
我的错。我有点误读了这里发现的 gnu 错误报告:gcc.gnu.org/bugzilla/show_bug.cgi?id=23587
-
有趣:如果您在 GCC 或 G++ 编译器中将无符号数量与“
-
确实如此。错误是警告并不总是被提出;)
-
@Jonathan Leffler:我一直不明白为什么默认情况下会禁用警告。
标签: c++ gcc gcc-warning