在C ++中,可以static在翻譯單元中使用關鍵字來影響符號(變量或函數聲明)的可見性。在n3092中,已棄用:附件D.2 [depr.static]在命名空間范圍內聲明對象時,不建議使用static關鍵字(請參閱3.3.6)。在n3225中,已將其刪除。在我能找到的唯一的文章是有點非正式的。它確實強調了,為了與C兼容(以及將C程序編譯為C ++的能力),棄用是令人討厭的。但是,直接將C程序編譯為C ++可能已經令人沮喪,因此我不確定是否值得考慮。有誰知道為什么要更改?
3 回答

慕哥9229398
TA貢獻1877條經驗 獲得超6個贊
在《C ++標準核心語言缺陷報告和已接受的問題》中,修訂版94位于1012下。不贊成使用靜態 `他們指出:
盡管7.3.1.1 [namespace.unnamed]指出,由于未命名的命名空間提供了更好的選擇,所以不建議使用static關鍵字在命名空間范圍內聲明變量,但在可預見的將來,該功能不太可能在任何時候被刪除。 。
基本上說,棄用static并沒有任何意義。它永遠不會從C ++中刪除,它仍然很有用,因為如果您只想聲明具有內部鏈接的函數或對象,則不需要使用未命名空間的樣板代碼。

慕妹3242003
TA貢獻1824條經驗 獲得超6個贊
不論是否贊成,刪除此語言功能都會破壞現有的代碼并惹惱人們。
整個靜態棄用只是沿著“匿名名稱空間比靜態更好”和“引用是更好的指針”的想法。大聲笑。
- 3 回答
- 0 關注
- 534 瀏覽
添加回答
舉報
0/150
提交
取消