Ускорение Дельфи , если Вы уже не находитесь на D2009
DDevExtensions, дает Вам несколько дополнительных тонких настроек в IDE
FastMM, Включенном в IDE от D2006 и но у Вас есть больше опций при выполнении его сами
, FastCode Высоко оптимизировал версии некоторого RTL и функций VCL
Структура не может быть пустой в C, потому что это запрещено синтаксисом. Более того, существует семантическое ограничение, которое делает поведение неопределенным, если структура не имеет именованного члена:
struct-or-union-specifier:
struct-or-union identifieropt { struct-declaration-list }
struct-or-union identifier
struct-or-union:
struct
union
struct-declaration-list:
struct-declaration
struct-declaration-list struct-declaration
struct-declaration:
specifier-qualifier-list struct-declarator-list ;
/* type-specifier or qualifier required here! */
specifier-qualifier-list:
type-specifier specifier-qualifier-listopt
type-qualifier specifier-qualifier-listopt
struct-declarator-list:
struct-declarator
struct-declarator-list , struct-declarator
struct-declarator:
declarator
declaratoropt : constant-expression
Если вы напишете
struct identifier { };
, вы получите диагностическое сообщение, потому что вы нарушаете синтаксические правила. Если вы напишете
struct identifier { int : 0; };
, то у вас будет непустая структура без именованных членов, что делает поведение неопределенным и не требует диагностики:
Если список-декларации-структуры не содержит именованных элементов, поведение не определено.
Обратите внимание, что следующее запрещено, поскольку элемент гибкого массива не может быть первым членом:
struct identifier { type ident[]; };
В C99: «Если список-декларации-структуры не содержит именованных членов, поведение не определено».
Синтаксис все равно не позволяет этого, хотя я не увидеть все, что говорит о необходимости диагностики, что возвращает его в лагерь «неопределенного поведения».
Грамматика C не допускает, чтобы содержимое struct
было пустым - должно быть по крайней мере безымянное битовое поле или именованный член (насколько это касается грамматики - я не уверен, что структура, содержащая только безымянное битовое поле, в противном случае действительна).
Поддержка пустых структур в C является расширением в GCC .
В C ++ и пустая структура / спецификация члена класса явно разрешена, но размер определен равным 1 - если только в рамках оптимизации пустой базовой базы компилятору не разрешено заставлять пустой базовый класс не занимать места в производном классе.