use*_*409 21 c++ const compiler-warnings
有没有人知道C++编译器提供的任何警告有助于强制执行const正确性?例如,任何包含非const参数的C++方法产生的警告会很好,该参数在方法内部永远不会被修改.我看到有一个名为-Wsuggest-attribute = const的gnu编译器警告; 但是,当我使用此标志时,我收到一条错误消息,表示无法识别.有什么想法吗?
我不认为存在这样的警告,主要是因为它没用.仅仅因为参数未在调用中被修改,并不意味着它应该const
只是为了它.
想想virtual
功能.也许是基类的设计师,但在基类中不修改参数,想要离开它的延伸类是否要修改参数.
另外,考虑大型应用程序,其中修改接口或API或任何成本很多.您现在可能不需要修改参数,但将来打算这样做.你现在不打算这样做const
,强制进行完全重建,并且当你删除它时,将来可能会冒错误const
.
小心,const
像这样的参数:
void myFunc(int const param);
Run Code Online (Sandbox Code Playgroud)
它不属于接口.它属于函数实现的本地范围.实际上,这个功能:
int inc(int const param) { return param+1; }
Run Code Online (Sandbox Code Playgroud)
可以声明为
int inc(int param);
Run Code Online (Sandbox Code Playgroud)
声称有权修改变量但实际上没有这样做,这并不违反const正确性范式.
如果您担心,const_cast
您可以首先使用它,或者只是grep
在代码库中使用它.
小智 5
-Wsuggest-attribute=const
Run Code Online (Sandbox Code Playgroud)
此分析需要选项
-fipa-pure-const
Run Code Online (Sandbox Code Playgroud)
默认情况下启用
-O
Run Code Online (Sandbox Code Playgroud)
和更高
归档时间: |
|
查看次数: |
1559 次 |
最近记录: |