この見積もりをhereから、ページの下部にチェックしてください。 constsが行うのに対し、彼らは最終的に出力されたオブジェクト/ライブラリ/実行ファイル内の任意のスペース を消費しませんconst vs enum in D
列挙型は、その中でconsts異なる(私は約
const
sがinvariant
の同様に適用される引用されたコメントを信じています)。
value2
はリテラルとして扱われ、オブジェクト・ファイルには表示されませんしながら、だから、明らかにvalue1
は、実行可能ファイルを肥大化されます。戻るCで
const int value1 = 0xBAD;
enum int value2 = 42;
++私はいつもこれは、定数を離れて最適化することができませんでしたレガシー上の理由から、古いコンパイラのためだったと仮定。しかし、これがまだDに当てはまる場合は、この背後に深い理由があるはずです。誰でも知っている理由は?
しかし、コンパイラは常に関連するすべてのソースを持つことを前提としています。 – larsivi
サードパーティのライブラリにそのconst変数へのアクセス権を与えたい場合はどうすればよいですか?もしそれがconstにされたクラスインスタンス全体であれば? – Marenz
私は "compiler/* linker *"と言った。さらに、Dはコンパイル時の変数の値を(とにかくフォールディングなどのために)見ることができなければなりません。したがって、物理的にどこかに格納する点が少なくなります。とにかく利用可能です。 (私は以前の実行からオブジェクトコードを内部的に逆アセンブルするコンパイラは認識していません) – FeepingCreature