C 开发人员长期以来一直在翻译单元中使用“static”关键字来控制符号可见性。然而,这种做法在 n3092 中被弃用,随后在 n3225 中被删除。
弃用“static”旨在阻止其在命名空间范围内声明对象,因为未命名的命名空间提供了更好的替代方案。然而,跟踪 C 缺陷的问题揭示了这一变化的微妙原因。
在 C 标准核心语言缺陷报告的修订版 94 中,问题 (1012. Undeprecating static )解释说:
虽然 7.3.1.1 [namespace.unnamed] 声明不推荐使用 static 关键字在命名空间范围内声明变量,因为未命名命名空间提供了更好的替代方案,但该功能不太可能将在可预见的将来的任何时候被删除。
此更新有效地逆转了弃用。 “静态”仍然是声明具有内部链接的函数和对象的有效关键字。与使用未命名命名空间相比,它的主要优点在于简洁且无需额外的样板代码。
最初的弃用旨在增强 C 对 C 标准的遵守,因为 C 无法识别未命名的命名空间。然而,撤销弃用的决定承认将 C 程序编译为 C 的现实世界的复杂性。
弃用“static”可能是善意的,但将其删除反映了这样的认识:未命名的命名空间并不能完全取代“静态”用于声明具有内部链接的对象的实用性。因此,开发人员可以继续放心地使用“静态”,因为它在 C 标准中的存在不太可能很快消失。
以上是C 中的'static”关键字真的被弃用了吗?的详细内容。更多信息请关注PHP中文网其他相关文章!