Tôi đã xem đoạn mã sau và được thông báo rằng có nghĩa là COL_8888_RED
là "độc lập cuối cùng". Tại sao? Điều gì làm cho người cuối này độc lập? (Tôi đã hỏi những coder gốc nhưng họ không nhận lại với tôi ... quái gì có lẽ họ cũng không biết.)Điều gì làm cho mã này "độc lập cuối cùng"?
union _colours {
uint8 c[3][4];
uint32 alignment;
};
static const union _colours col_8888 = {
{ /* B G R A in memory */
{ 0x00, 0x00, 0xFF, 0xFF, }, /* red */
{ 0x00, 0xFF, 0x00, 0xFF, }, /* green */
{ 0xFF, 0x00, 0x00, 0xFF, }, /* blue */
}
};
#define COL_8888_RED *((uint32 *)&col_8888.c[0])
Điều gì có thể là độc lập cuối cùng không an toàn, xem xét một số phần cứng khác có thể chọn ARGB, BGRA, RGBA, v.v ... –
@ dash-tom-bang, thực sự các loại màn hình khác sẽ yêu cầu màu đỏ, màu xanh lá cây và màu xanh được xác định trong các đơn hàng byte khác nhau. Và trong trường hợp này, liên minh 'col_8888' xác định màu đỏ, xanh lá cây và xanh lam cho một loại màn hình cụ thể, và do đó định nghĩa một thứ tự byte cụ thể - nó đang được sử dụng * chỉ * để ghi vào kiểu hiển thị đó. Các loại hiển thị khác sẽ yêu cầu các định nghĩa khác nhau về màu đỏ, xanh lục và xanh lam. – BeeBand