問題タブ [compile-time]

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.

0 投票する
9 に答える
19663 参照

c - コンパイル時の条件のサイズ

条件sizeofが true の場合はマクロを定義し、false の場合は何も実行しません (ただし、コンパイルは行います)。プリプロセッサが をサポートしsizeofている場合、次のようになります。

コンパイル時のアサーションを作成する方法を説明するページがいくつかあります (例: http://scaryreasoner.wordpress.com/2009/02/28/checking-sizeof-at-compile-time/ )。失敗します)、しかし、このアプローチを私が望むものに拡張する方法がわかりません。sizeof

0 投票する
5 に答える
2999 参照

c++ - コンパイル時の浮動小数点演算

コンパイル時定数整数を使用する浮動小数点計算は、コンパイル時または実行時に実行されますか? たとえば、次の場合に除算演算が計算されます。

0 投票する
5 に答える
9501 参照

c# - csharpのコンパイル時のenv変数から定数を作成できますか?

Hudsonを使用してプロジェクトを構築し、Hudsonはコンパイル時に「%BUILD_NUMBER%」などの環境変数を便利に定義します。

その変数をコードで使用したいので、実行時にこれがどのビルドであるかをログに記録するなどのことができます。ただし、System.Environment.GetEnvironmentVariableはランタイム環境にアクセスしているため、実行できません。必要なのは次のようなものです。

また

構文がわからないことを除いて。誰かが私を正しい方向に向けてくれませんか?ありがとう!

0 投票する
3 に答える
9455 参照

objective-c - オブジェクトが Objective-C の 2 つの別々のプロトコルに準拠しているかどうかを確認する

Objective-C では、インスタンス変数を宣言すると、コンパイル時に割り当て時にプロトコルに準拠しているかどうかを次のように確認できます。

変数に割り当てられたオブジェクトがコンパイル時に 2 つの別々のプロトコルに準拠しているかどうかを確認することはできますか? 次のように:

conformsToProtocol:and などを使用して実行時チェックを実行できることはわかっていますrespondsToSelector(これは、安全性を高めるために実際にオブジェクトを使用する前に実行します)。また、チェックを実行する独自のセッター メソッドを作成することもできますが、コンパイル時に知りたいです。

0 投票する
2 に答える
1498 参照

c# - 型が Serializable 属性でマークされていることをコンパイル時にチェックすることは可能ですか?

具体的には、セッションに保存されたすべての型がシリアライズ可能でなければならないアウト プロセス セッション状態サーバーと互換性のあるアプリケーションを作成しています。

HttpSessionState に入れられた型が Serializable 属性でマークされていることをコンパイル時に確認する方法はありますか。この「無効な」コードの行に沿った何か

0 投票する
3 に答える
1736 参照

c++ - C++ クラスとオブジェクト - メモリ

メモリを占有するのは、aclassまたはobject? そして、それはその時ですcompileexecution

ありがとう。

0 投票する
3 に答える
15302 参照

linux - コンパイル時の共有オブジェクトへのリンク

Windows では、多くの .dll に対応する静的な .lib が付属しています。私の理解では、対応する.libには基本的にLoadProcAddress呼び出しが含まれているため、プログラマーが自分で行う必要はありません。基本的に、時間の節約になります。Linuxに切り替えたとき、.dllを.soに、.libを.aに置き換えて、状況は同じであると想定していましたが、これが間違っていることを示している状況になり、何が原因かわかりません進行中:

.a/.so ペアとして提供されるライブラリを使用しています。.a に対してリンクしていましたが、生成されたバイナリに対して ldd を実行すると、対応する .so ファイルへの参照が含まれていませんでした。それで、私は .so ファイルに対してリンクしようとしましたが、驚いたことに、これはうまくいきました。さらに、結果のバイナリに対して ldd を実行すると、.so ファイルが表示されました。

だから、私は何が起こっているのかについて本当に混乱しています。Windows では、.dll ファイルにリンクしようとは思いません。また、Windows では、.dll ファイルに .lib が付随していて、コンパイル時に .lib に対してリンクした場合、実行時に対応する .dll に依存することが予想されます。この場合、これらはどちらも当てはまりません。

はい、Linux の共有オブジェクトに関する基本的なチュートリアルを読みましたが、読んだ内容はすべて、最初の仮定が正しかったことを示しているようです。ところで、私は Code::Blocks を IDE として使用していることに言及する必要がありますが、これは複雑なことを知っていますが、.so ファイルにリンクするように指示すると、単純に交換するだけではないことを 99% 確信しています。結果のバイナリが小さいため、.a ファイル。(加えて、ldd に関するビジネス全体...)

とにかく、事前に感謝します。

0 投票する
4 に答える
9457 参照

c++ - C++でのコンパイル時の階乗の計算と印刷

上記のプログラムは、コンパイル時に階乗値を計算します。coutを使用して実行時ではなく、コンパイル時に階乗値を出力したい。コンパイル時に階乗値を出力するにはどうすればよいですか?

VS2009を使用しています。

ありがとう!

0 投票する
3 に答える
3828 参照

c++ - コンパイル時のパラメータに応じて、インライン関数のさまざまなオーバーロードを使用するにはどうすればよいですか?

パフォーマンスが重要なインライン関数がありinline T func(T a, T b, int p)ます。pがゼロであることがわかっている場合は、かなり最適化できます。ただし、「if」を使用して他のすべてのケースにペナルティを課すことはできません。私が欲しいのは、コンパイル時にpがゼロであることを知っているだけの関数を最適化することです。テンプレートマジックを使用して、それを行うためのクリーンな方法はありますか?

編集

コードが非常に低レベルであるため、別の名前の関数/互換性のないオーバーロードを使用することはできません(それを正しく表現する方法がわかりません)。別の/将来のプロセッサでさまざまな最適化の機会が利用できる可能性が非常に高いです。したがって、これらすべての低レベルのものを1つの関数シグネチャに限定することで、コードを再コンパイルするだけで、あらゆるタイプの最適化を使用できます。

0 投票する
7 に答える
1629 参照

c++ - 右シフトが符号付き型の算術であるかどうかのコンパイル時チェック

コンパイル時に符号付き型を操作するときに右シフトが算術であるかどうかをチェックする最も移植性の高い方法は何でしょうか(たとえば、であるかどうか-2 >> 1) 。-1

私の考えは、コンパイル時にこれを何らかの方法でチェックし、これを検出できるようにすることです。これにより、関数のさまざまなバージョンをコンパイルできます(演算子>>が実際に算術シフトであるかどうかによって異なります)。

トピックを読んで、 C / C ++の符号付き右シフトが特定のコンパイラの算術であることを確認しますか?フラグを初期化するというアイデアになりました

そして、次のように実行時にテストします。

ただし、可能であれば毎回この分岐を避けたいと思います。簡単にするために、ポータブル算術右シフトを実装したいとします。関数が呼び出されるたびにこれをチェックする必要がある場合、これはパフォーマンスに大きな影響を与えるため、可能であればコンパイル時にチェックしたいと思います。

このチェックを実行する移植可能な方法が存在しない場合、特定のコンパイラ/プラットフォームのifdefをチェックするなど、ベストエフォートベースでチェックすることによってこれを実行する方法はありますか?