use*_*460 12 c++ pointer-arithmetic command-line-arguments clang-static-analyzer clang++
尝试打印第一个命令行参数时:
std::cout << argv[0] << std::endl;
Run Code Online (Sandbox Code Playgroud)
clang-tidy发出警告:
警告:[cppcoreguidelines-pro-bounds-pointer-arithmetic]中的'不使用指针运算'
有argv没有使用指针算法的替代方法来使用值?是不是char**通过任何明智的方法访问必须使用指针算术?
我欣赏有一些专门的函数来处理命令行参数,但它们似乎太重了,不能简单地打印一个参数.
我正在编写c++,使用clang编译器和构建cmake.
小智 9
来自clang-tidy - cppcoreguidelines-pro-bounds-pointer-arithmetic:
指针应仅引用单个对象,指针算法易碎且容易出错.
span<T>是一种用于访问数据数组的边界检查的安全类型.
是的:是的
是否有另一种方法可以在不使用指针算法的情况下使用argv的值?是不是通过任何合理的方法访问char**必须使用指针算术?
你是完全正确的.但是,指南是关于隐藏指针算法,让助手类在执行算术之前进行边界检查.你可以构建一个span<char*>from argv和argc.