不赞成使用static关键字…不再吗?

在C ++中,可以static在翻译单元中使用关键字来影响符号(变量或函数声明)的可见性。


在n3092中,已弃用:


附件D.2 [depr.static]

在命名空间范围内声明对象时,不建议使用static关键字(请参阅3.3.6)。


在n3225中,已将其删除。


在我能找到的唯一的文章是有点非正式的。


它确实强调了,为了与C兼容(以及将C程序编译为C ++的能力),弃用是令人讨厌的。但是,直接将C程序编译为C ++可能已经令人沮丧,因此我不确定是否值得考虑。


有谁知道为什么要更改?


犯罪嫌疑人X
浏览 490回答 3
3回答

慕哥9229398

在《C ++标准核心语言缺陷报告和已接受的问题》中,修订版94位于1012下。不赞成使用静态 `他们指出:尽管7.3.1.1 [namespace.unnamed]指出,由于未命名的命名空间提供了更好的选择,所以不建议使用static关键字在命名空间范围内声明变量,但在可预见的将来,该功能不太可能在任何时候被删除。 。基本上说,弃用static并没有任何意义。它永远不会从C ++中删除,它仍然很有用,因为如果您只想声明具有内部链接的函数或对象,则不需要使用未命名空间的样板代码。

慕妹3242003

不论是否赞成,删除此语言功能都会破坏现有的代码并惹恼人们。整个静态弃用只是沿着“匿名名称空间比静态更好”和“引用是更好的指针”的想法。大声笑。
打开App,查看更多内容
随时随地看视频慕课网APP