fix(boards): 修复arduino下 数组左/右循环 操作异常

This commit is contained in:
王立帮
2025-04-29 22:44:09 +08:00
parent 5728d628a2
commit 52f1c9a599
19 changed files with 160 additions and 107 deletions

View File

@@ -0,0 +1,20 @@
void array_rotate_loop(void *arr, size_t elem_size, size_t length, bool right) {
if (length <= 1) {
return;
}
uint8_t buffer[32];
if (elem_size > sizeof(buffer)) {
return;
}
if (right) {
memcpy(buffer, (uint8_t *)arr + (length - 1) * elem_size, elem_size);
memmove((uint8_t *)arr + elem_size, arr, (length - 1) * elem_size);
memcpy(arr, buffer, elem_size);
} else {
memcpy(buffer, arr, elem_size);
memmove(arr, (uint8_t *)arr + elem_size, (length - 1) * elem_size);
memcpy((uint8_t *)arr + (length - 1) * elem_size, buffer, elem_size);
}
}