The safe option that does it waste extra padding bytes at end of the structure is to declare the last byte array with a size 0 and not one. The compiler will align the byte array if needed it it should not do that, because byte arrays should be byte aligned and not word aligned except if this array has some prepaddng declared or if the array has specific declarators to force the alignment (including by de Mari g this array in an union with other types with alignment constraints)
Declaring the last member as char[1] is not the best choice. char[0] would be better.