Tôi viết và đọc thanh ghi từ một bản đồ bộ nhớ, như thế này:cảnh báo: con trỏ kiểu 'void *' được sử dụng trong số học
//READ
return *((volatile uint32_t *) (map + offset));
//WRITE
*((volatile uint32_t *) (map + offset)) = value;
Tuy nhiên trình biên dịch mang lại cho tôi những cảnh báo như thế này:
warning: pointer of type ‘void *’ used in arithmetic [-Wpointer-arith]
Tôi làm cách nào để thay đổi mã của mình để xóa cảnh báo? Tôi đang sử dụng C++ và Linux.
truyền sang 'char *' - giả sử bạn muốn * bù trừ * byte *. bạn có khỏe không –
Có đó là bản đồ bên phải là void *, cảm ơn. – user1876942
Bạn cần truyền 'map' đến một con trỏ tới một loại kích thước 1. Kiểu duy nhất được đảm bảo bởi chuẩn là kích thước 1 là' char', do đó bạn cần phải đưa nó vào 'char *'. –