{$FINITEFLOAT OFF}

チョットマテ。

http://chuacw.hn.org/chuacw/archive/2004/05/10/504.aspx

Delphi for .NETにて、浮動小数点演算のチェックの有無を決めるディレクティブ。
デフォルトはON。

http://qc.borland.com/wc/wc.exe/details?reportid=7135

OFFにすると倍近く計算スピードが上がるらしい。

…こんな調子で重要そうなUndocumentedディレクティブが存在したら、たまったもんじゃないですよ。

↓dccil.exeから可読文字列を抜いて、ディレクティブっぽい塊だけ取り出してみた。Delphi7のマニュアルに無かったものはbタグ。

ASSERTIONS (Assertの有効無効)
AUTOBOX (知らんな…名前からするとBoxing?)
BOOLEVAL (ショートサーキットだよな…)
DEBUGINFO (デバッグ情報)
EXTENDEDSYNTAX (いにしえのPascalからの拡張構文…ってON以外ありえないんだけど)
FINITEFLOAT (これ)
HINTS (未代入の変数とかそういう弱警告)
IMPORTEDDATA (パッケージの効率を上げる代わりに他のユニットの変数を参照できなくなる)
IOCHECKS (Pascal固有のファイル処理ルーチンが例外出すかどうか)
IMPLICITBUILD (パッケージを暗黙にビルドしていいかどうか)
LOCALSYMBOLS (デバッグ情報にローカルシンボルを加えるかどうか)
LONGSTRINGS (長い文字列かShortStringか)
OPENSTRINGS (ShortStringの長さを無視して引数に使えるか)
OPTIMIZATION (最適化)
OVERFLOWCHECKS (オーバーフローチェック)
RANGECHECKS (範囲チェック)
REALCOMPATIBILITY (RealをDoubleにするかReal48にするか)
REFERENCEINFO (デバッグ情報にソースへの参照を…だっけか)
DEFINITIONINFO (REFERENCEINFOの別名)
SAFEDIVIDE (初期Pentiumのfdiv命令のバグ対策)
STACKCHECKS (スタック溢れをチェック)
STACKFRAMES (スタックフレームの生成を強制)
TYPEDADDRESS (デフォルトのまま使ってると痛い目に…)
TYPEINFO (RTTI)
UNSAFECODE (これはD8のマニュアルにありました。unsafeの許可)
METHODINFO (知らんな…)
VARSTRINGCHECKS (ShortStringをvarで渡す時長さの一致を要求)
WARNINGS (警告)
WRITEABLECONST (constに代入できる)
OBJEXPORTALL ($LINKでリンクしたオブジェクトファイルを外に見せる…でいいのかな)
ALIGN (アライメント)
MINENUMSIZE (列挙型のサイズ)
IMAGEBASE (dll作る時は忘れちゃダメ)
MAXSTACKSIZE (スタックの最大値)
MINSTACKSIZE (スタックの最小値)
RESOURCERESERVE (Linuxでのリソースのベースアドレス)
OBJPRIORITY (知らん…けど….NETにも関係無さそうな名前だ…)
EXTENSION (実行ファイルの拡張子)
INCLUDE (まんま)
LINK (objをリンクする…というよりimplementation節に取り込む、が正しいかな)
RESOURCE (リソースファイルのリンク)
DESCRIPTION (実行ファイルに埋めこむ説明文)
HPPEMIT (C++Builderのヘッダー自動生成でヘッダーに直接埋めこむ文字列)
NOINCLUDE (C++Builderのヘッダー自動生成でusesを#includeにしない)
APPTYPE (コンソールかGUIか)
SONAME (.soの名前)
SOVERSION (LIBVERSION)
SOPREFIX (LIBPREFIX)
SOSUFFIX (LIBSUFFIX)
LIBVERSION (libXXX.so.YYY.ZZZのZZZ)
LIBPREFIX (libXXX.so.YYY.ZZZのlib)
LIBSUFFIX (libXXX.so.YYY.ZZZのYYY)
DENYPACKAGEUNIT (そのユニットはパッケージに入れちゃダメ宣言)
DESIGNONLY (設計時専用パッケージ…を意味する単なるフラグ)
RUNONLY (実行時専用パッケージ…を意味する単なるフラグ)
WEAKPACKAGEUNIT (dcpには含めるけど実はパッケージに含めない)
VARPROPSETTER (げ、こんなのあったっけ…setter procedureの引数にvarを許すか…だっけか…)
DUPLICATEENABLE (何だろう…)
EXTERNALSYM (C++Builderのヘッダー自動生成でそのシンボルを変換しない)
NODEFINE (C++Builderのヘッダー自動生成には出さないけど.objにはエクスポート)
YD (REFERENCEINFOの別名)
OLDOBJWARN (は…?)
WARN (Kylix対策、うざい)
MESSAGE (コンパイル時にメッセージを出す)
SETPEFLAGS (PEのフラグ)
SETPEOPTFLAGS (PEのフラグその2)
REGION (折り畳み開始)
ENDREGION (折り畳み終了)