08 сентября 2025

Новые директивы компилятора {$PUSHOPT} и {$POPOPT} в Delphi 13 Florence

В компилятор Delphi 13 Florence добавлены новые директивы {$PUSHOPT} и {$POPOPT}, которые сохраняют и восстанавливают текущий набор параметров и конфигурации warning'гов. Их реализация аналогична "#pragma option push" и "#pragma option pop") в C++.
В случае несоответствия при использовании директив $PUSHOPT и $POPOPT будут выданы предупреждения:
  • "W1078 {$POPOPT} with no matching {$PUSHOPT} in %s" - вызов $POPOPT до вызова $PUSHPOPT;
  • "W1079 Previous {$PUSHOPT} on line %ld not restored" - в файле содержится больше $POPOPT, чем $PUSHPOPT.
Параметры и настройки, которые учитываются этими новыми директивами, приведены ниже в таблице:
ДирективаКраткая форма
{$ALIGN ON/OFF/1/2/4/8/16}{$A+} {$A-} {$A1} {$A2} {$A4} {$A8} {$A16}
{$BOOLEVAL ON/OFF}{$B+} {$B-}
{$ASSERTIONS ON/OFF}{$C+} {$C-}
{$DEBUGINFO ON/OFF/0/1/2}{$D0} {$D1} {$D2}
{$OLDOBJWARN}{$E+} {$E-}
{$IMPORTEDDATA ON/OFF}{$G+} {$G-}
{$LONGSTRINGS ON/OFF}{$H+} {$H-}
{$IOCHECKS ON/OFF}{$I+} {$I-}
{$WRITEABLECONST ON/OFF}{$J+} {$J-}
{$LOCALSYMBOLS ON/OFF}{$L+} {$L-}
{$TYPEINFO ON/OFF}{$M+} {$M-}
{$OPTIMIZATION ON/OFF}{$O+} {$O-}
{$OPENSTRINGS ON/OFF}{$P+} {$P-}
{$OVERFLOWCHECKS ON/OFF}{$Q+} {$Q-}
{$RANGECHECKS ON/OFF}{$R+} {$R-}
{$STACKCHECKS ON/OFF}{$S+} {$S-}
{$TYPEDADDRESS ON/OFF}{$T+} {$T-}
{$SAFEDIVIDE ON/OFF}{$U+} {$U-}
{$VARSTRINGCHECKS ON/OFF}{$V+} {$V-}
{$STACKFRAMES ON/OFF}{$W+} {$W-}
{$EXTENDEDSYNTAX ON/OFF}{$X+} {$X-}
{$REFERENCEINFO ON/OFF}{$Y+} {$Y-}
{$DEFINITIONINFO ON/OFF}{$YD}
{$MINENUMSIZE 1/2/4}{$Z+} {$Z-} {$Z1} {$Z2} {$Z4}
{$AUTOBOX ON/OFF} 
{$FINITEFLOAT ON/OFF} 
{$HINTS ON/OFF} 
{$IMPLICITBUILD ON/OFF} 
{$REALCOMPATIBILITY ON/OFF} 
{$UNSAFECODE ON/OFF} 
{$METHODINFO ON/OFF} 
{$NATIVE_CPP_INTERFACES ON/OFF} 
{$SCOPEDENUMS ON/OFF} 
{$POINTERMATH ON/OFF} 
{$COMPATIBLELITERALS ON/OFF} 
{$HIGHCHARUNICODE ON/OFF} 
{$OLDTYPELAYOUT ON/OFF} 
{$WEAKLINKRTTI ON/OFF} 
{$STRONGLINKTYPES ON/OFF} 
{$EXCESSPRECISION ON/OFF} 
{$EXTENDEDCOMPATIBILITY ON/OFF} 
{$ZEROBASEDSTRINGS ON/OFF} 
{$LEGACYIFEND ON/OFF} 
{$WARN (<ident>|ALL) ON/OFF/DEFAULT/ERROR} 
{$CODEALIGN 0/1/2/4/8/16} 
{$MAXPAGESIZE <intconst>} 
$DESIGNONLY [ON/OFF]} 
{$RUNONLY [ON/OFF]} 
{$VARPROPSETTER [ON/OFF]} 
{$DUPLICATEENABLE [ON/OFF]} 
{$RTTI (EXPLICIT|INHERIT)
{(METHOD|FIELD|PROPERTY)(<set const expr: TRttiVisibility>)}
 
{$INLINE ON/OFF/AUTO} 
{$WARNINGS ON/OFF/ERROR} 
{$TEXTBLOCK ( NATIVE/CR/LF/CRLF ) [ LANGUAGE ]} 

Комментариев нет:

Отправить комментарий