|
говорит, что если в тексте встречается прагма, которую компилятор не знает, он должен ее проигнорировать. На Ваших трех компиляторах есть такая прагма и синтаксис ее совпадает. Рад за Вас, повезло. Но завтра у Вас появится четвертый компилятор, который не имеет этой прагмы или она у него по-другому делается. Эту вашу он пропустит и ошибка втихаря вылезет во всех красе!
Насчет "дырок". "Дырки" - это не как попало. Это особенности железа. Тот же MSP430 не может выбирать 16-битные данные по нечетному адресу. Поэтому там и возникает выравнивание. Когда вы напишете
char a;
int b;
то уже между а и b возникнет та самая "дырка". Безо всякой структуры.
Если структура:
struct TSlon
{
char a;
int b;
} Slon;
то при обращении
int x = Slon.b;
компилятор сгенерирует одну команду пересылки. А в случае подавленного выравнивания он будет вынужден сгенерить кучу лишнего кода, чтобы извлечь половинки инта и склеить их. Оверхед на этой операции многократный. Если он вас не волнует, то, действительно, проблем нет. Но я предпочитаю не транжирить и без того невеликую производительность 430-го на проблемы на пустом месте.
E-mail: info@telesys.ru