問題タブ [compile-time-constant]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - すべてのコンパイル時定数はインライン化されていますか?
次のようなクラスがあるとしましょう。
私のアプリケーションの他のクラスの多くは、これらのオプションを使用しています。ここで、オプションの 1 つだけを変更し、コンパイルされたクラスだけをデプロイしたいと考えています。しかし、これらのフィールドが消費者クラスでインライン化されている場合、これは不可能になりますよね?
コンパイル時定数のインライン化を無効にするオプションはありますか?
c - 変数を静的に初期化する (コンパイル時)
1) 私の C アルゴには多くの定数があります。2) 私のコードは浮動小数点と固定小数点の両方で動作します。
現在、これらの定数は関数 float2fixed によって初期化されており、浮動小数点では何もしませんが、固定小数点では固定小数点表現を見つけます。たとえば、浮動小数点で動作している場合、0.5f は 0.5f のままですが、pow() ルーチンを使用し、固定小数点で動作し、固定小数点表現が Qx.16 である場合は 32768 になります。
これは維持するのは簡単ですが、これらの定数を固定小数点で計算するには実際には多くの時間がかかります (pow は浮動小数点関数です)。C++ では、メタプログラミングを使用するので、コンパイラはこれらの値をコンパイル時に計算するため、実行時にヒットすることはありません。しかし、Cではそれは不可能です。またはそれは?そんな裏技知ってる人いますか?それを行うのに十分なほど賢いコンパイラはありますか?
回答をお待ちしております。
あ
c - c でコンパイル時に pow(10,x) を計算できますか?
コンパイル時に pow(10,x) を計算することは可能ですか?
浮動小数点をサポートせず、整数除算が遅いプロセッサを使用しています。コンパイル時にできるだけ多くの計算を実行しようとしています。x
と の両方を引数として渡すと、特定の関数を劇的に高速化できC/pow(10,x)
ます (x と C は常に定数の整数ですが、呼び出しごとに異なる定数です)。1/pow(10,x)
プログラマーに計算を強制するのではなく 、自動的に実行するマクロを導入することで、これらの関数呼び出しのエラーを少なくできるかどうか疑問に思っています。
プリプロセッサのトリックはありますか? コンパイラーがライブラリー呼び出しを強制的に最適化することはできますか?
unit-testing - ユニットテストでPerlの「定数を使用」をオーバーライドする方法はありますか?
いくつかの定数を宣言したPerlモジュールがあります。
ライブ操作では定数は変更されませんが、単体テストで変更できるようにしたいと思います。たとえば、に設定し~/project/testdata/
ます。グローバルな可変変数を使用せずにこれを行う方法はありますか?
私はおそらくで使用できTest::MockObject
ますconstant
か?
flash - 動的に作成されたボタンにそれぞれのアクションを与える方法 - パート 2
こんにちは、フラッシャーの仲間です:)
ここ StackOverFlow で提起された最初の質問は、この問題を扱っていました。いくつかの異なるボタンを作成する配列がありました。しかし、私はそれらにアクションを割り当てる方法を知りませんでした: 動的に作成されたボタンのアクションをそれぞれに与える方法 - パート 1
Joel Hooksのおかげで、コードを機能させることができました。ただし、今回はライブラリからインポートしたグラフィックをクラスとして使用する代わりに、グラデーションを描画してムービークリップを作成しています* (jpg をインポートする必要はありませんでした)*。今、私は別の恐ろしい「コンパイル時定数ではありません」というエラーを再び取得しています。クリックまたはロールオーバーされたボタンインスタンスを特定しようとしている方法と関係があると思います。
前のボタン作成(作業)コード:
for (var i:Number=0; i < myXMLArray.length; i++) { navButton=new NavButton ; navButton.name="ボタン" + i; navButton.x=i * navSIZE; navButton.y=navBtnY; navButton.buttonMode=true; thumbsMov.addChild(navButton);
buttons.push(navButton); buttons[i].addEventListener(MouseEvent.MOUSE_UP,handleButtonClick); ボタン[i].addEventListener(MouseEvent.ROLL_OVER,handleButtonOver); buttons[i].addEventListener(MouseEvent.ROLL_OUT,handleButtonOff); }
以前のリスナー(作業)コード:
var button:NavButton = event.target as NavButton; var id:Number = Number(button.name.split("ボタン") 1 ); if(button) TweenLite.to(buttonRolls[id], .4, {alpha:1, ease:Strong.easeOut}); cataText[id].defaultTextFormat = a12Green; cataText[id].text = myXMLArray[id].id; }
現在のボタン作成コード:
}
現在のボタン リスナー コード:
}
次の行がコメントアウトされている場合、現在のムービーはエラーなしでのみ実行されます。
それが、コンパイル時定数エラーが発生する原因となっているためです。ただし、その行を削除すると、動的に作成された button0 と button1 という名前の 2 つのボタンではなく、すべてのボタンが button1 になります。
ここでのヘルプやポインタは大歓迎です! 私のコードを見てくれてありがとう。
c++ - 型特性のヘルプ
次のテンプレート クラスがあるとします。
変えることはできませ んWrap
。大事です。
から派生したクラスがあるとしWrap<T>
ます。例えば、
これらのクラスも変更できません。上記のすべてのクラスはサードパーティです。彼らは私のものではありません。
次のコンパイル時間が必要ですtype_traits
。
私が必要なものは何?
c++ - 配列割り当てを使用したコンパイラのさまざまな動作
最近、MSVC++2008と比較したときにg++の興味深い動作を発見しました。この小さなプログラムについて考えてみましょう。
コンパイルされますか?どう思いますか?私のC(またはC ++)の知識によると、これはコンパイルしないでください。任意の整数で関数doSomething()を呼び出すことができるため、コンパイル時にiTest配列のサイズを決定できません。ただし、これをg ++でコンパイルしようとすると、問題なく動作します。これで、おそらくここで何が起こったのかを理解できます。コンパイラは、コンパイル時定数をパラメータとして渡したときに1回だけこの関数を呼び出すことに気づきました。ここでいくつかの深刻な最適化が行われています...しかし、MSVC ++ 2008を使用してこれをコンパイルしようとすると、次のようになります。
私の質問は、これが言語の定義(C標準(C ++標準))にどのように準拠しているかということです。g ++がそのような最適化を行うのは問題ありません(この場合は簡単に確認できますが、初めて遭遇したときは大規模なプロジェクトであり、一見しただけではあまり意味がありませんでした)。
c++ - C++ コンパイル時の定数検出
ライブラリ ソースが利用可能で、一般に変数パラメーターをサポートする必要がある場合がありますが、実際には、これらのパラメーターは一般的に定数です。
次に、定数パラメーターの特別な処理 (たとえば、ヒープ割り当ての代わりに静的配列を使用) によって物事を最適化できる可能性がありますが、そのためには、最初に何かが定数であるかどうかを判断する必要があります (または、いくつかのマクロを定義することもできますが、あまり便利ではありません)。 )。
これが実用的な実装です。
更新: こちらも: http://codepad.org/ngP7Kt1V
- 本当に有効な C++ ですか?
- これらのマクロを取り除く方法はありますか? ( is_const() は、関数の依存関係が配列サイズの式で機能しないため、関数にすることはできません。また、変数パラメーターも受け入れないため、テンプレートにすることもできません。)
更新:これは、意図された使用法に似た更新です。if(N==0)
が 0 でない場合、コンパイラは分岐のコードを生成しませN
ん。同様に、必要に応じて完全に異なるデータ構造に切り替えることができます。確かに完璧ではありませんが、それがこの質問を投稿した理由です。
actionscript-3 - 実行時にコンパイル時変数を取得する
「define」mxmlc コンパイラ オプションを使用して、コンパイル時の定数を SWF ファイルに埋め込もうとしています。
次のように、コードベースに「ハードコード」すると、この変数にアクセスできます。
ただし、getDefinitionByName() のようなものを使用して、実行時にこれを実行できるようにしたいと考えています。
これにより、次のエラーがスローされます。
実行時に名前空間にコンパイル時定数をロードする方法を知っている人はいますか?
java - Java switch ステートメント: 定数式が必要ですが、それは定数です
そのため、いくつかの静的定数を持つこのクラスに取り組んでいます。
次に、定数に基づいて関連する文字列を取得する方法が必要です。
ただし、コンパイルするconstant expression required
と、3 つのケース ラベルのそれぞれでエラーが発生します。
コンパイラがスイッチをコンパイルするためにコンパイル時に式を認識する必要があることは理解していますが、Foo.BA_
定数ではないのはなぜですか?