g++ 编译警告

虽然大部分警告不会影响代码的运行(小部分可能造成影响的是类似于强制转换的警告,需要自行确保该转换有意义),但是程序员应该有义务保持代码的良好规范,以方便后续的功能迭代。

此处记录一些编译警告,不定时更新...

-Wreorder

warning: ‘xxx::xxx’ will be initialized after [-Wreorder]

  • 产生原因:如果代码中成员变量的初始化顺序和它们实际执行时初始化顺序不一致,给出此警告。
  • 解决办法:按声明顺序进行初始化。

warning: ‘typename xxx::xxx’ [-Wreorder]
when initialized here [-Wreorder]

  • 产生原因:变量默认初始化位置不当。
  • 解决办法:把构造函数里这个变量的默认初始化删掉,改为在类声明中初始化。

-Wuninitialized

warning: ‘xxx’ is used uninitialized in this function [-Wuninitialized]

  • 产生原因:指针没有指向可用的内存地址或没有分配地址。
  • 解决办法:为该指针分配一定的内存空间,如把 char* str; 改成 char* str = oldStr;char* str = new char[20];

-Wsign-compare

warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

  • 产生原因:有符号数与无符号数进行比较。
  • 解决办法:把有符号数强制转换成无符号数 static_cast<unsigned long>(xxx),可以用 typeid(xxx).name() 查看变量具体类型。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,915评论 18 139
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,138评论 1 32
  • 我的窗台下 映照着你的脸庞 你的眼神闪闪烁烁 躲在门缝里 我便唤你过来 你羞羞掩掩 忽而低头呢喃 抬头挥了挥手 说...
    _晓思阅读 139评论 0 1
  • 最愿春色花满天,也喜夏雨绿满眼。长啸秋风百花香,且醉梅花冬日暖。人生如花东流水,光阴匆匆不复回。春去秋来冬又残,世...
    爱情码头_085a阅读 283评论 1 5
  • 补记2017.1.26 大宝:牛牛(7周岁4个月11天) 二宝:申申(9个月5天) 读经时间:总第12天,第1周5...
    牛牛的猪妈阅读 202评论 0 0