c – 始终初始化所有变量

c – 始终初始化所有变量,第1张

概述我正在阅读 the FreeBSD coding style并且非常喜欢它(因为我喜欢垂直紧凑的代码).但是有这个: Initialize all Variables You shall always initialize variables. Always. Every time. gcc with the flag -W may catch operations on uninitialize 我正在阅读 the FreeBSD coding style并且非常喜欢它(因为我喜欢垂直紧凑的代码).但是有这个:

Initialize all Variables
You shall always initialize variables. Always. Every time. gcc with the flag -W may catch operations on uninitialized variables,but
it may also not.

Justification
More problems than you can belIEve are eventually traced back to a pointer or variable left uninitialized.

如果变量没有合适的初始值,那么保留它没有值更好.这样编译器可能会在未初始化的情况下读取它.我不是在谈论T * p = NulL,这是一个陷阱表示,可能(或可能不是)非常有用,而是int personal_number = 0 / *但是0是有效的个人号码!! * /

为了澄清,为了回应abasu的评论,我的例子是试图说明没有可用无效值的情况.我已经问了question并且回答说使用不可能的值来标记错误或其他条件是很棒的.但情况并非总是如此.例子很多:8位像素值,速度矢量等.

我总是可以看到“始终初始化变量”的一个有效替代方法是:

//logical place for declarationsT a;/*code,for example to set up the environment for evaluating a*/a = fooForA();/*more code*/fooThatUsesA(a);

这样,如果忘记了初始化,就会出现警告并修复错误,删除警告.

解决方法 所有整数都是有效的个人号码吗?

如果没有,则使用无效值初始化personal_number.

如果它们是,那么即使您没有自己初始化personal_number,它仍然保留一个有效的个人号码值 – 但该值是未知的.所以无论如何将它初始化为0 – 你没有引入问题(之前的有效数字,之后的有效数字),唯一的区别是这个数字现在已为您所知.

当然,在这两种情况下,最好不要使用整数文字进行初始化,而是做类似这样的事情:

enum { INVALID_PERSONAL_NUMBER = -1 }int personal_number = INVALID_PERSONAL_NUMBER;
总结

以上是内存溢出为你收集整理的c – 始终初始化所有变量全部内容,希望文章能够帮你解决c – 始终初始化所有变量所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1215048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存