問題タブ [compiler-options]

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 投票する
2 に答える
10603 参照

visual-studio - g++ の -g オプションは VS2010 cl コンパイラと同等ですか?

-g オプションを指定した g++ を使用すると、デバッグ目的で gdb を使用できます。

Visual Studio 2010 cl.exe コンパイラでこのオプションに相当するものは何ですか?

このページには、リンク用のさまざまなライブラリ (デバッグ/リリース) があります。

cl.exe でデバッグ オプションを使用してコンパイルする場合、対応するライブラリ リンク オプション (/MD/MT と /MDd/MTd) を使用する必要がありますか?

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

c++ - What is the difference between the /Ox and /O2 compiler options?

Microsoft's C++ compiler (cl.exe, as included with Visual Studio) offers several optimization switches. The difference between most of them seems self-explanatory, but it's not clear to me what the difference is between /O2 (which optimizes code for maximum speed) and /Ox (which selects "full optimization").

I've tried reading the documentation for the /Ox option, and it seems to confirm that this switch also enables optimizations for maximum speed, rather than size:

The /Ox compiler option produces code that favors execution speed over smaller size.

But in particular, the following statement under the "Remarks" section caught my eye:

In general, specify /O2 (Maximize Speed) instead of /Ox.

So my question is, why should one generally favor /O2 over /Ox? Does the latter option enable a particular optimization known to cause unforeseen bugs or otherwise unexpected behavior? Is it simply that the amount of optimization to be gained is not worth the additional compile time? Or is this just a completely meaningless "recommendation" resulting from the fact that /O2 is the default option in VS?

0 投票する
1 に答える
10764 参照

android - -std = gnu++0xと-std=c ++ 0xのGCCの違いは何ですか?どちらを使用する必要がありますか?

GCC 4.4.3(Android用)で<stdint.h>使用すると問題が発生します:-std=c++0x

しかし、-std=gnu++0x作品を使用する:

<stdint.h>C ++ 0xと互換性がありませんか?

0 投票する
1 に答える
810 参照

c++ - cスタイルのキャストでconst_castセマンティクスを無効にするコンパイラスイッチ?

最近、私は次のようなコードに出くわしました。

明らかに、開発者は自分が何をしているのかわかりませんでしたが、コンパイラがc-style-castを黙って受け入れず、少なくとも適切なものが必要なconst_cast場合は、これをコミットする前に2回も必要だった可能性があります。

それで、これは私に考えさせられました、現代のコンパイラーはconst_castc-style-castsのセマンティクスを防ぐためのスイッチを持っていますか?

static_c-style-castのすべての発生を防ぐことは単純に実用的ではなく、それらとセマンティクスを許可することは必要な悪reinterpret_です(一部のライブラリコードの場合のみ)が、私の印象では、c-style-castの合法的な使用は捨て去られますconstnessはC++コードベースでは非常にまれなので、完全に無効にすることは可能でしょうか?

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

c - gccでコンパイラの最適化を無効にする方法は?

アセンブリ言語を学ぼうとしています。ファイルを分解する方法を検索して見つけました.cが、プログラムの最適化されたバージョンが生成されると思います。Cファイルに対応する正確なアセンブリコードを確認できる方法はありますか。

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

c++ - Visual C ++コンパイラ最適化フラグ:/O2と/Otの違い

/Otフラグ(「高速コードを優先」)と/O2フラグ(「速度を最大化」)の違いは何ですか?

/Os(と同上/O1。)

0 投票する
1 に答える
499 参照

xcode - Xcode 3.2.5: 新しいプロジェクトで「警告をエラーとして扱う」と「静的アナライザーを実行する」の両方を有効にする

問題

Xcode で新しいプロジェクトを作成するたびに、[プロジェクト] > [プロジェクト設定の編集]に移動し、 [警告をエラーとして扱い、静的アナライザーを実行]に移動してそれらを有効にする必要があります。私の人生では、これからこれをデフォルトにする方法を見つけることができないようです。

私が試したこと

メニューを探す。グーグル。Stackoverflow.com。真夜中の墓地での動物の生贄 (はい、まだ試していませんが、次はリストに追加します)。

質問

新しいプロジェクトのコンパイラ設定を簡単に設定する方法はありますか?

Xcode 4 にアップグレードするように言わないでください。私は既にそれを持っています (そして、このタスクをまだ達成できるかどうかを調べていません)。Xcode 3 はまだ数か月必要です。

おっと!ほとんど忘れていました - 前もって感謝します!

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

c++ - g++ はスロー指定子をチェックできますか?

これに関する2つの質問:

  • 指定子を強制的g++に無視する方法はありthrowますか?
    (たとえば、私が覚えているように、Visual Studio は とは異なり、スロー指定子を無視しますthrow())

  • スロー指定子が正しいかどうかを強制的g++にチェックすることは可能ですか?つまり、スロー指定子を持つ関数が関数を呼び出すかどうかをチェックすることです(これはワンパスコンパイラで実行できます)。指定子throw、指定子に違反する例外の実行を監視しますか? (注:大量の警告が発生する可能性があるため、スロー指定子なしで関数を監視しないでください)


編集: 2 番目の質問にいくつかの例を追加します。

次があるとします。

0 投票する
1 に答える
2553 参照

c++ - MS C++ (CL) でコンパイルされた実行可能ファイルが Windows 2000 で動作しない

重複の可能性:
Visual Studio 2010 でコンパイルされた C++ DLL を Windows 2000 で使用する際の問題

次の質問と同様:
 Visual Studio 2010 の C++ コンパイラを Visual Studio 2008 の C++ ランタイム ライブラリで使用できますか?
 VS2010 は、Windows 2000 で動作するネイティブ実行可能ファイルを作成できますか?


WinXP マシンでVS2010 (CL バージョン 16.00.30319.0 )を使用してコマンド ラインから ( CL.EXE を使用して) コンパイルしている C++ コードがありますが、結果のネイティブ (x86) 実行可能プログラムを Win2000、WinXP で実行したいなど

古いバージョンの CL (VC98、バージョン 12.00.8186 ) は問題なく動作しますが、VS2010 バージョンでは実行可能ファイルが生成され、Win2000 で実行するとポップアップ エラーが発生します。

foo.exeは有効な Win32 アプリケーションではありません

ソリューションは、VisualStudio の設定やプロパティではなく、 CL コンパイラまたはリンカー オプションの形式である必要があります。コードは数年前のもので、他の OS に移植できるように作成されているため、新しい C++ 言語機能は必要ありません。ネイティブ コード (.NET や CLI ではなく x86) の実行可能ファイルのみが必要です。

(例については、 http ://david.tribble.com/src/crlf.cppおよびhttp://david.tribble.com/src/detab.cppを参照してください。)

新しい開発環境 (WinXP、そして最終的には Windows 7) で古いコンパイラ (VS 9.0) を使い続けることができると思いますが、それは理想的なソリューションとは言えません。確かに、MS は、古いがまだ現存する Windows OS と下位互換性のあるネイティブ実行可能ファイルを作成する方法をまだ提供していますか?