mat*_*975 6 c++ static keyword linkage
我最近阅读了Stroustrups The C++ Programming Language,在第9章的关于Linkage的部分中,我遇到了以下段落:
"在C和较旧的C++程序中,关键字static(混淆)用于表示"使用内部链接".除了函数和类之外,不要使用静态."
问题是,进一步阅读,作者没有详细说明为什么这是不好的做法.我经常在我的代码中使用静态函数进行一些简单的计算,这在编译单元之外是不需要的,但是我从来没有意识到这是不赞成的,而且我不明白为什么它是坏的.有人可以为我解释这个吗?
我认为这个想法不是对内部联系不屑一顾,而是为了避免与新含义混淆static:static有太多含义(用内部联系声明内容,用静态存储持续时间定义局部变量,标记类的非实例成员) ),所以避免一个不太直观的是一件好事.
因此,C++ 98标准提供了另一种使用内部链接声明内容的方法:未命名的命名空间,并static在声明命名空间范围内的对象时弃用".
C++ 11标准删除了这种弃用(并且还以某种方式改变了未命名的命名空间的语义,而不是真正需要内部链接),所以它现在真的是一种风格问题.