Мне известно, что использование reinterpret_cast для приведения массива беззнакового символа к указателю структуры может вызвать проблемы из-за заполнения и упорядочения байтов в разных системах (как в этом примере)
struct SomeData
{
unsigned char first;
int second;
};
unsigned char data[5];
// SomeData might be more than 5 bytes because of padding
// We can't be sure second is valid, because of bytes ordering
SomeData* someData = reinterpret_cast<SomeData*>(data);
Но мойвопрос для структуры, имеющей только беззнаковые члены char
struct RGB
{
unsigned char r;
unsigned char g;
unsigned char b;
};
unsigned char data[3];
RGB* rgbData = reinterpret_cast<RGB*>(data);
В этом случае структура RGB является своего рода эквивалентом unsigned char [3], поэтому я бы предположил, что дополнения не будет. Я проверил с g ++ и msvc, и отступы не добавляются, это гарантировано?