Сегодня я наткнулся на код, похожий на следующий, и мне интересно, что на самом деле происходит:
#pragma pack(1)
__align(2) static unsigned char multi_array[7][24] = { 0 };
__align(2) static unsigned char another_multi_array[7][24] = { 0 };
#pragma pack()
При поиске упоминания ключевого слова __align в компиляторе Keil я наткнулся на следующее:
Выравнивание областей выполнения и секций ввода Бывают ситуации, когда вы хотите выровнять секции кода и данных... Если у вас есть доступ к исходному коду, вы можете сделать это во время компиляции с помощью ключевого слова __align(n)...
Я не понимаю, что подразумевается под "выравниванием секций кода и данных". Кто-нибудь может прояснить, как происходит это выравнивание?