首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么-Winit-self与-Wuninitialized分离?

为什么-Winit-self与-Wuninitialized分离?
EN

Stack Overflow用户
提问于 2014-04-09 14:17:17
回答 1查看 1.4K关注 0票数 4

这个问题的目的是让gcc编译器在输入错误并使用自身初始化变量时发出警告。

int f() { int i = i; return i; }

事实证明,除了标志之外,您还需要-Wuninitialized

-Winit-self (C,C++,Objective和Objective++)警告未初始化的变量,这些变量是用自己初始化的。注意,此选项只能与-Wuninitialized选项一起使用,而后者只适用于-O1和以上版本。

我的问题是:为什么这不是-Wuninitialized的默认行为?在什么用例中,要警告未初始化的变量,而不是自初始化的变量,这些变量同样麻烦?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-09 14:22:08

看起来这个bug报告关于使用自身初始化的成员变量的警告对此有一个解释(强调我的):

我同意安德鲁的观点,a(a)错误应该总是警告,它应该独立于-Winit-self,它存在,这样-Wuninitialized就不会对自初始化自动变量以沉默警告这一常见的(但有问题的)做法发出警告。

它可能被称为有问题的实践,因为它是C++中未定义的行为以自初始化自动变量,而bug报告是C++错误报告。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22965414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档