2
使用外部鏈接符號(其他全局命名空間混亂/碰撞)有沒有什麼缺點?例如,我認爲如果我有一個我從來沒有調用的函數,如果它有內部鏈接,編譯器可以放棄它,但如果它是外部的,編譯器必須將該代碼留在內,因爲稍後有人可能會鏈接到它。它是否正確?還有其他的缺點嗎?外部鏈接缺陷
我在問,因爲我知道建議使用未命名的命名空間而不是static關鍵字,但由於未命名的命名空間中的符號仍然具有外部鏈接,因此它們將遭受上述缺點(如果我對此有所瞭解),以及所以並不比標準所說的靜態功能更好。
*未命名的命名空間中的函數可以被丟棄而不影響程序* - 是,但是它?你知道編譯器實際上是這樣嗎? – baruch
@baruch:是的,gcc在優化級別> ='-O1'處執行此操作。 –