我得到一个Lint警告661/662.它们意味着可能访问/创建越界指针.但我确实检查边界,不可能超出范围.任何想法如何摆脱它?
const my_enum_type my_array[] = {MY_FIRST_ENUM_VALUE, MY_SECOND_ENUM_VALUE, MY_THIRD_ENUM_VALUE};
for(i = 0; i < sizeof(my_array); i++){
//do stuff such as
my_variable = my_array[i];
my_function(my_array[i]);
}
Run Code Online (Sandbox Code Playgroud)
我使用的行my_array[i]是代码661/662.
sizeof(my_array)不是你想要的.你想要的sizeof(my_array) / sizeof(*my_array).
你可以使用迭代器:
for(auto it = std::begin(my_array); it != std::end(my_array); ++it){
//do stuff such as
my_variable = *it;
my_function(*it);
}
Run Code Online (Sandbox Code Playgroud)
或直接用于范围:
for (const auto& e : my_array){
//do stuff such as
my_variable = e;
my_function(e);
}
Run Code Online (Sandbox Code Playgroud)