gpt4 book ai didi

c++ - 编译器切换到禁用 c 风格转换中的 const_cast 语义?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:59 24 4
gpt4 key购买 nike

最近我偶然发现了这样的代码:

void foo(const Bar* b) {
...
takes_nonconst_param_fn((Bar*)b);
...

显然,开发人员并不知道他在做什么,但如果编译器没有默默地接受 c-style-cast 并且至少需要一个适当的 const_cast,他可能已经知道了在提交之前两次。

所以这让我开始思考,现代编译器是否有一个开关来防止 const_castc 风格转换的语义?

防止所有 c-style-casts 的出现根本不切实际,允许它们的 static_reinterpret_ 语义是必要的邪恶(如果仅用于某些库代码),但我的印象是,在 C++ 代码库中,合法使用 c-style-casts 来抛弃 constness 是非常罕见的,所以也许应该可以完全禁用它?

最佳答案

GCC 有选项 -Wcast-qual 可以在 C 风格的转换删除类型限定符时发出警告。与 -Werror 结合使用,您可以根据需要完全阻止它。

关于c++ - 编译器切换到禁用 c 风格转换中的 const_cast 语义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5650790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com