Я переношу проект msvc, в котором есть несколько библиотек, и каждая библиотека имеет определенное выравнивание элементов структуры. Использование выравнивания по умолчанию вызвало множество фатальных проблем с несовпадением, и поиск в Google сказал мне, что я могу решить эту проблему, установив выравнивание для каждой структуры/класса/объединения вручную с помощью флага __attribute__ ((aligned (MY_ALIGN)))
, однако есть одна вещь, которая меня беспокоит:
Давайте для простоты скажем, что проект A использует выравнивание по 1 байту, а проект B, который активно использует функциональность проекта A и включает множество его заголовков, имеет выравнивание по 16 байтам. Будут ли с этим проблемы, или я слишком много думаю, и это просто сработает? У меня плохое предчувствие, что при сборке библиотеки компилятор msvc устанавливает выравнивание для каждой структуры во всех заголовках (независимо от того, включены ли они в проект или на них ссылаются источники). Это правда? И если это так, скажите, пожалуйста, как мне установить выравнивание для эмуляции настройки выравнивания элементов структуры MSVC?