静态强制转换以避免 IDE 警告?
Static cast to avoid IDE warnings?
我正在使用Clion,经常收到Parameter type mismatch
警告。 例如,在以下方面:
std::default_random_engine random_engine(time(0));
我得到Parameter type mismatch: Using 'unsigned long' for signed values of type 'time_t'
据我所知,避免此警告的唯一方法是使用静态强制转换,例如:
std::default_random_engine random_engine(static_cast<unsigned long>(time(0)))
此转换可以自动完成。 我的程序没有必要编译。
但是,当参数可以自动转换时,我是否应该避免使用静态强制转换,这是否有任何性能成本(或其他原因(?
这是一个一般的原则链,应该包含一个答案:-(
- 任何构建都必须完全无警告。(
/WX
或你拥有的任何东西( - 您应该启用尽可能多的警告。
- 你应该避免C型石膏,因为它们会回来咬你。
static_cast
永远不会比隐式强制转换产生更多的性能成本。(这通常是0
。- 如果可能,请使用确切的类型。(例如,使用整数或浮点文字类型后缀(
- 如果无法匹配确切的类型,因为两个函数(或...(需要不同但兼容的类型,并且如果隐式转换触发警告,请使用
static_cast
- (!如果隐式转换触发警告,这很可能是因为转换在某些边缘情况下是有损的或有问题的。
- 考虑为这些有损强制转换编写填充程序函数(可能带有额外的运行时检查(。
相关文章:
- 警告处理为错误这里有什么问题
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- cppcheck在const std::string[]上引发警告
- C++:如何在CLion IDE中安装Boost
- GCC对可能有效的代码抛出init list生存期警告
- 如何在BST的这个简单递归实现中消除警告
- 关于std::move的使用,是否有编译警告
- g++ 在某个类成员未初始化时不发出警告
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- 使用typeid警告未使用的变量
- 示例C++项目编译中的警告
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 如何修复编译器警告 C6386 和 C6385?
- 返回语句后的代码,没有警告
- IDE (CLion) 无法解析C++模板类型
- 静态强制转换以避免 IDE 警告?
- 当我尝试从成员函数调用构造函数时,为什么IDE会发出警告
- 如何在代码块 IDE 上修复此警告,警告:按值 [-Wcatch-value=] 捕获多态类型"类 std::d omain_error"
- 这个警告在orwell dev C++IDE中意味着什么
- Visual Studio从命令行生成警告;IDE没有