Я видел бесчисленное количество вопросов в форме «Мне не нравится дополнение, как его отключить», но еще не нашел ничего о том, чтобы заставить компилятор предоставить дополнительное дополнение. .
Конкретный случай, который у меня есть, выглядит так
struct particle{
vect2 s;
vect2 v;
int rX;
int rY;
double mass;
int boxNum;
};
Где vect2
— простая struct {double x; двойной у;} вектор2
. Чтобы использовать SSE2, мне нужно иметь возможность загрузить пару двойников, выровненных по 16-байтовым границам. Раньше это работало, пока я не добавил дополнительный int
, увеличив размер моей структуры с 48 до 56 байт. Результат - сегфоулты.
Могу ли я использовать какую-либо директиву компилятора, которая либо говорит: «дополнить эту структуру, чтобы она была кратной 16 байтам», либо «эта структура имеет выравнивание по 16 байтам»? Я знаю, что мог бы сделать это вручную (например, добавив дополнительный символ [12]), но я бы предпочел просто сказать компилятору (GCC, предпочтительно совместимый с ICC), и мне не нужно делать это вручную, если я изменю структура в будущем.