問題タブ [g++]
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.
c++ - リリースビルドとデバッグビルドを備えたシンプルなmakefile-ベストプラクティス
私はmakefilesを初めて使用します。「GNUmakeによるプロジェクトの管理」の本から、makefileの作成やその他の関連する概念を学びました。これでmakefileの準備ができたので、作成したものに問題がないことを確認する必要があります。これがmakefileです
質問
- 上記のmakefileは、リリースビルドとデバッグビルドでうまく機能します。しかし、それは正しい形式ですか?それとも、そこに欠陥がありますか?
- 上記のmakefileは、 makeを使用して呼び出された場合、デフォルトでデバッグビルドを実行します。リリースビルドの場合、make mode=releaseが必要です。これは正しいアプローチですか?
- g ++に提供されているデバッグおよびリリースコンパイラフラグは正しいですか?デバッグには-g-Wallを使用し、リリースには-Wallのみを使用します。これは正しいですか?
どんな助けでも素晴らしいでしょう。
c++ - 「計算された値は使用されていません」という警告の原因となるこのコードを修正するにはどうすればよいですか?
doubleの配列があり、その配列で計算を実行してから、その計算の結果である最小値と最大値を見つける必要があります。これが基本的に私が持っているものです:
計算された値result
が使用されないという警告が表示されます。すべての警告をエラーとして扱うため、これはコンパイルされません。警告を回避するためにこのコードを修正するにはどうすればよいですか?コンパイラにg++を使用しています。
警告テキストは次のとおりです。
編集:私は反対票を理解していませんが、私は今物事が機能しています。時間を割いて私を助けてくれたみんなに感謝します。
c++ - g++ で静的ライブラリを作成するための最適化とフラグ
Linux で g++ コンパイラを使い始めたばかりで、コンパイラ フラグについていくつか質問があります。ここにある
最適化
最適化フラグについて-O1
、-O2
および-O3
g++ マニュアルページを読みました。これらのフラグをいつ使用するかがわかりませんでした。通常、どの最適化レベルを使用しますか? g++ のマニュアルには、 について次のように書かれています-O2
。
さらに最適化します。GCC は、容量と速度のトレードオフを含まない、サポートされているほぼすべての最適化を実行します。-O2 を指定すると、コンパイラはループ展開または関数インライン化を実行しません。-O と比較して、このオプションはコンパイル時間と生成されたコードのパフォーマンスの両方を向上させます。
インライン展開とループ展開を行っていない場合、パフォーマンスがどのように達成され、このオプションは推奨されますか?
静的ライブラリ
g++ を使用して静的ライブラリを作成するにはどうすればよいですか? Visual Studio で、クラス ライブラリ プロジェクトを選択すると、「lib」ファイルにコンパイルされます。g ++で同等のものは何ですか?
c++ - g++ は、単純なファンクターを「型が必要で、'xyz' を取得しました」で拒否します
私はC++でファンクターをいじっています。特に、ペアの最初の要素でソートしたいペアのベクトルがあります。私は完全に特殊化されたファンクター (つまり、"bool MyLessThan(MyPair &lhs, MyPair &rhs)" のようなもの) を書き始めました。次に、この種のものが興味深いという理由だけで、一般的な「このペアの最初の要素に F を適用する」ファンクターを書いてみたかったのです。以下に書いたのですが、g++ が苦手です。私は得る:
エラー: 'template struct Pair1stFunc2' のテンプレート パラメーター リストの引数 2 で型/値が一致しません エラー: 型が必要ですが、'less' が得られました
ここで私が間違っていることに誰かが光を当てることができますか? これは少し人為的な例であることはわかっていますが、STL-fu を改善するためだけに、何が起こっているのか知りたいです。
c++ - OSX で GCC を更新する
私は新しいプログラマーで、Macbook に XCode をインストールして GCC を取得しました。Xcode が OSX で GCC を取得する唯一の方法だと思います。Hello World アプリケーションを C++ で実行すると、バージョン 4.0.1 であるという g++ が表示されますが、g で始まるコマンドを探すと、g++-4.2 も表示されます。4.0.1 ではなく 4.2 をデフォルトにする方法はありますか? また、gcc を最新バージョンの 4.4.0 に更新する方法はありますか?
編集: わかりましたので、macports をインストールして gcc4.4 をインストールすると、端末に gcc-mp-4.4 として表示され、gcc_select でデフォルトにするにはどうすればよいですか。ありがとう。
g++ - g++3.4.4およびg++3.4.5とのリンクエラー
使用:windows xp、cygwinではg ++ 3.4.4、mingwではg++3.4.5。
cppunitを使用して単純な単体テストクラスをコンパイルしています。
g ++ 3.4.5を使用してリンクすると、多くのリンクエラーが発生します。g ++ 3.4.4でリンクすると、エラーは発生せず、exeは正常にリンクして実行されます。
エラーを追跡できないようですので、何か考えはありますか?
ありがとう。
編集:リンクエラー:参照されていない関数エラー。好き:
編集:コマンド行:
更新:Visual Studioの同じコード:エラーなし、単体テストは期待どおりに実行されます。
c++ - デフォルトのテンプレートクラス引数はg++を混乱させますか?
昨日、Intel(9.0)コンパイラを使用して問題なくコンパイルしているコードでg ++(3.4.6)コンパイラの問題が発生しました。何が起こったかを示すコードスニペットは次のとおりです。
g++コンパイラエラーは次のとおりです。
明らかに、このように記述された場合、デフォルトの引数は受け入れられません。コンパイラは、2番目のテンプレート引数の代わりに新しい関数引数が指定されていると想定しますstuff
。引数にはデフォルト値があるため、デフォルト値が必要です。typedefを作成することでコンパイラを支援できます。そうすれば、すべてが正常にコンパイルされます。
だから私は自分の問題を解決することはできますが、何が起こっているのかわかりません。ここでC++(テンプレート?)言語機能を見逃していて、何か間違ったことをしているのでしょうか、それとも最初のコードを受け入れないという点でg ++コンパイラが間違っているのでしょうか?
ところで、これもコンパイルされることに注意してください...
g++ - mingw32g++とのリンクエラー
なぜ私は得るのですか:
Mingw32コンパイラスイートを使用しています。
cygwin - C++ が Cygwin にインストールされていない
Cygwin をインストールしたところ、Windows から bash シェルを起動できls
ます。emacs
vi
g++
g++
Cygwinにデフォルトでインストールされていると思いましたか?g++
そうでない場合、 cygwin にパッケージとして追加できる正確なカテゴリは何ですか?
gcc - GCC がライブラリをデフォルト以外のパスにリンクしていない
Fedora10 マシンにブースト C++ ライブラリが既にインストールされていますが、ホーム フォルダーのどこかに保持している新しいバージョンを使用したいと考えています。g++ で、デフォルト ( /usr/include and /usr/lib64
) ではなく、ホーム フォルダーの場所にあるインクルード ファイルとライブラリ ファイルを使用する必要があります。
さらに言えば、ここで説明されているように、ファイルCPLUS\_INCLUDE\_PATH and LIBRARY\_PATH
で環境変数も宣言しました。~/.bashrc
今、私が走るとき、
プリプロセッサは、ホーム フォルダの場所からインクルード ファイルを使用して、デフォルトの場所を上書きします (CPLUS\_INCLUDE\_PATH
検索パスでの優先順位が高いため)。しかし、リンカーは同じ優先順位規則に従っていないようです。/usr/lib64
最初に検索するのではなく、常にデフォルトの場所から libboost_python.so を使用しますLIBRARY\_PATH
。libboost\_python.so
スイッチで明示的に指定した場合にのみ、ホーム フォルダー内のライブラリにリンクします-L
。これは本当に不便です。