問題タブ [gcc5]

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

c++ - 左辺値 istringstream istream_iterator に必要?

Visual Studio でastring fooを指定すると、次のようにして単語を a に分割できますvector

しかし、これは gcc 5.1 ではコンパイルできません。エラーが発生します:

型の右辺値からの型std::istream_iterator<std::basic_string<char> >::istream_type&{aka }の非 const 参照の無効な初期化std::basic_istream<char>&std::basic_istream<char>

gccにバグがあり、私たち自身のJonathan Wakelyによって修正されたことがわかりました。istringstreamこれはそのバグの拡張ですか、それともここで Rvalue を使用することは違法ですか?

0 投票する
0 に答える
48 参照

gcc - GCC5 を使用して LLVM 3.3 をコンパイルすると、c11 型シグネチャへの未定義の参照が発生する

GCC5 で LLVM 3.3* を使用するようにプロジェクトをコンパイルするのに問題があります。「llvm::sys::getDefaultTargetTripleabi:cxx11」などの未定義の参照を取得します

abi タグは、GCC5 との ABI の不一致の問題であることを示しています。でできることは_GLIBCXX_USE_CXX11_ABIわかっていますが、なぜそれが機能しないのかわかりません。プロジェクトと LLVM の両方が同じ GCC でコンパイルされています。

これを機能させる方法についてのアイデアはありますか?

*現在アップグレード中ですが、新しい LLVM バージョンにアップグレードする前に、現在の開発バージョンを動作させたいと考えています。開発マシンを、新しい GCC を搭載した Ubuntu 16.04 にアップグレードします。

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

c++ - キャプチャされた値の変数から Lambda パラメータに代入するときの gcc コンパイラのセグメンテーション エラー

私はこの答えに取り組んでいて、コードを書きました:

gcc でコンパイルすると、次のコードでエラーが発生します。

内部コンパイラ エラー: セグメンテーション違反it = replacement;

gcc 5.1、5.2、および 5.3 でローカルに試してみましたが、それらすべてで同じコンパイラ エラーが発生します。Clang は、コードと Visual Studio に満足しているようです。これは単なるコンパイラのバグであり、私が犯した間違いではありませんよね?

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

c++ - g++ 5.3.1 でコンパイルした場合、g++ 4.8.4 でコンパイルした同じプログラムよりも、プログラムの実行速度が 3 倍遅くなります。

最近、g++ 5.3.1 で Ubuntu 16.04 の使用を開始し、プログラムの実行速度が3 倍遅くなることを確認しました。それ以前は、Ubuntu 14.04、g++ 4.8.4 を使用していました。同じコマンドでビルドしました: CFLAGS = -std=c++11 -Wall -O3.

私のプログラムには、数学呼び出し (sin、cos、exp) で満たされたサイクルが含まれています。ここで見つけることができます。

さまざまな最適化フラグ (O0、O1、O2、O3、Ofast) を使用してコンパイルしようとしましたが、すべての場合で問題が再現されます (Ofast を使用すると、両方のバリアントが高速に実行されますが、最初の実行はさらに 3 倍遅くなります)。

私のプログラムでは、を使用libtinyxml-devlibgslcblasます。ただし、どちらの場合も同じバージョンであり、パフォーマンスに関して (コードと callgrind のプロファイリングによると) プログラムに大きな影響を与えることはありません。

プロファイリングを実行しましたが、原因がわかりません。 Kcachegrind 比較 (左の方が遅い) . Ubuntu 14.04libm-2.23と比較して、プログラムが使用するようになったことに気づきました。libm-2.19

私のプロセッサは i7-5820、Haswell です。

遅くなる理由がわかりません。あなたはなにか考えはありますか?

PS 以下に、最も時間のかかる関数を示します。

さらなる調査。次の簡単なプログラムを書きました。

この単純なサンプル プログラムが、g++ 5.3.1 libc-2.23 (libm-2.23) よりも g++ 4.8.4 libc-2.19 (libm-2.19) の方が 2.5 高速である理由を本当に不思議に思っています。

コンパイルコマンドは次のとおりです。

他の最適化フラグを使用しても比率は変わりません。

gcc と libc のどちらがプログラムの速度を低下させているかを理解するにはどうすればよいですか?

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

c++ - C++ での仮想継承中のコンストラクターの呼び出し

これは、 learncpp.com でこのセクションを読んでいるときに遭遇した質問です。ここにリストされているコードを使用してから、テスト用にわずかな変更を加えました。

バックグラウンド

仮想継承は、基本クラスへの共通参照を作成します。これには 2 つの効果があります。

まず、ベースのメンバーのコピーが 1 回だけ作成されるため、あいまいさがなくなります (たとえば、print() 関数を PoweredDevice に追加して main() で呼び出すと、コンパイラ エラーが発生します)。

次に、最も派生したクラスが基本コンストラクターの呼び出しを担当します。中間クラスの 1 つが初期化リスト内の基本コンストラクターを呼び出そうとした場合、その呼び出しは無視されます。

問題

コードをコンパイルして実行すると、次のように返されます。

次のように返されます。

GDB (7.11.1) を使用して実行を追跡すると、中間関数も初期化リストを介して PoweredDevice を呼び出していることがわかりますが、これらは無視する必要があります。このように PoweredDevice を複数回初期化してもメンバーがあいまいになることはありませんが、1 回だけ実行されるはずのコードが複数回実行されるため、問題が発生します。より複雑な問題については、仮想継承を使用するのが苦手です。

これらの中間クラスがまだベースを初期化しているのはなぜですか? 私のコンパイラ (gcc 5.4.0) の癖ですか、それとも仮想継承のしくみを誤解していますか?

編集:コード

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

nvidia - gcc - openacc - コンパイルされたプログラムが正しく機能しない

最近、GCC コミュニティでは、コンパイラで OpenACC をサポートするためのいくつかの取り組みが行われています。だから、私はそれを試してみたかった。

GCC Web サイトのメイン ドキュメントに近いこの段階的なチュートリアル (チュートリアル) を使用して、OpenACC をサポートするGCC 6.1をコンパイルおよびビルドすることができました。

次に、次のコマンドを使用してプログラムをコンパイルしました。

gcc pi.c -fopenacc -foffload=nvptx-none -foffload="-O3" -O3

そして、すべてがエラーなしで進みます。

実行はエラーなしですが、正解はありません。

私のCコードと実行中のプログラムの出力は次のとおりです。

そして、これは実行後の出力a.outです:

何か案は?

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

c++ - Ubuntu 16.04 で Proxygen をビルドする

Ubuntu 16.04 で github から Facebook の Proxygen c++ http ライブラリをビルドしたいと思います。依存関係をインストールするために deps.sh コマンドとともにセットアップした環境は次のとおりです。

これで愚かな依存関係を構築することができましたが、不完全な型エラーが発生しています:

誰かがこれを試したり解決したりしましたか? 私はまだコードベースに慣れていません。ティア。

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

c++ - root 以外のユーザーとして GCC 5.1.0 を CUDA 7.5 で動作させる

Google でラウンドを行いましたが、うまくいきませんでした。私の質問は少しユニークです - 私は GCC 5.1.0 でコンパイルすると問題なく動作しますが、GCC 4.8.3 では大量のエラーをスローする、多くの C++11 依存関係を持つ大量のコードを持っています。後者は CUDA で問題なく動作します。また、GCC 5.1.0 バージョンが原因で動作しない CUDA を使用する必要もあります。これは、問題のある行を削除するために host_config.h ファイルを編集することを推奨する、以前に提起された多くの問題に似ています。ただし、私は機関のクラスターで作業しており、システム管理者によってインストールされたため、ファイルを編集できません。module load コマンドを使用して任意の GCC バージョンをロードできますが、下位の GCC バージョンにダウングレードすると、コードに C++11 の依存関係の問題が発生します。これに関するアドバイスはありますか?

0 投票する
0 に答える
158 参照

c++ - Mac OSX 10.9.3 での Homebrew GCC5 インストール エラー

homebrew (brew install gcc5) を使用して OSX 10.9.3 (Mavericks) に gcc5 をインストールしようとすると、次のエラーが発生します。別のマシンのOSX 10.11.1(El Capitan)に同じものをインストールできます。ただし、他のソフトウェアの互換性の問題により、オペレーティング システムのアップグレードは避けたいと考えています。この問題の既知のバグは見つかりませんでした。アドバイスをいただければ幸いです。