我最近在办公室参加的一次编码风格演讲提倡在定义变量时不应将其分配(到默认值)。相反,它们应该在使用前被分配一个默认值。所以,像
int a = 0;
应该不赞成。
显然,'int' 的示例很简单,但对于其他类型(如指针等)也是如此。
此外,还提到了 C99 兼容编译器现在会在上述情况下抛出警告。
上面的方法对我来说只对结构有用,即你只在使用之前对它们进行memset。如果仅在错误分支中使用(或填充)结构,这将是有效的。
对于所有其他情况,我发现定义和分配默认值是一个谨慎的练习,因为我在编写和维护代码时遇到了很多由于未初始化的指针而导致的错误。此外,我相信通过构造函数的 C++ 也提倡相同的方法,即定义和分配。
我想知道为什么(如果)C99 标准不喜欢定义和分配。他们在做编码风格演示所倡导的事情方面有什么可观的优点吗?