C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – g警告:无符号表达式的比较<0始终为false大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
要编译我的C代码,我使用-W标志,它会导致警告:

我认为这被视为一个错误,并在GCC 4.3版本上得到修复,但我使用的是GCC 4.1

代码显然@L_@R_673_11235@_4@冒犯:

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.

这种情况永远不会发生,编译器只需删除测试就可以优化.这里的警告告诉你,因为如果有人这样做,那可能是个错误.

你的情况下,你可能只是删除测试,它应该没问题.

大佬总结

以上是大佬教程为你收集整理的c – g警告:无符号表达式的比较<0始终为false全部内容,希望文章能够帮你解决c – g警告:无符号表达式的比较<0始终为false所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。