Причем это действительно фактический стандарт, он используется. В отличае от стандарта паскаля (который по сути - фикция).
Не соглашусь с Вами, Алексей. Что лучше — несовместимые расширения без стандарта де-юре или де-факто совместимые расширения, аналог теневого стандарта? Если PACKED есть во всех популярных компиляторах, то он и есть стандарт. А вот с прагмами и declspec я натыкался на грабли, когда писал простейший SDK. Учитывая, что третьи лица используют стандарт древнее 11х невозможно не тащить за собой весь воз костылей. Так что паскалисты молодцы — там и соглашения о вызовах и выравнивания единообразно присутствуют, из-за чего код де-факто переносим. А что ещё нужно практикам?
Я не слишком понимаю о чем речь. Берем произвольное приложение писанное скажем на FreePascal'e - оно соберется на Delphi? А на VirtualPascal'e? А на Object Pascal'e (нет, не том что TurboPascal, а тот который от apple)? Вот что-то я сомневаюсь.
packed в стандартном паскале есть, и это не расширизм. Только он (packed) вот не гарантирует ничего в том виде, в котором он там описан. Кроме того, насколько я понимаю, по сути софта писанного на стандартном паскале просто нет. Все используют несовместимые (со стандартом и друг с другом) диалекты.
А прописать соглашения о вызовах в диалектах паскаля тоже можно (а главное - нужно, иначе там это не появилось бы). Причина появления явного прописывания соглашения о вызове в сигнатуре функции ровно та же что и в случае появления её в реализациях Си.