問題タブ [gcc4]

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 に答える
1097 参照

c - gcc4 がこのループを展開しないのはなぜですか?

gcc 4.4.6ドキュメントには次のように記載されています。

私はこのコードをコンパイルしています:

...一度はfunroll-all-loops最適化あり、一度はなし:

次にdiff、それぞれのアセンブリ コード (を使用して作成) を比較し-S -fverbose-asmます。

生成されるコードは同じです。

ループをdo while;に変更してみました。ループ カウンターの調整 (最大 100)。ループ本体内のステートメントを変更します。

何が欠けている可能性がありますか?このループが展開されないのはなぜですか?

アップデート

Nikos C--param max-unroll-times=Nは、N を上限としてループ登録パラメータを上げることを提案しました。これは賢明な提案でしたが、動作は変わりませんでした。また、ループの反復回数を 10 回に減らしました。また、実際に何かを「実行」するようにコードを更新しましたが、変更はありません。

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

c++ - テンプレート化された基本クラスのテンプレート化されたメソッドへのアクセス

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

cygwin - Cygwin で OpenMP を MinGW-64 と連携させるにはどうすればよいですか?

シナリオ

OpenMPGMPを使用する C99 ANSI C でアプリケーションを開発しています。当然のように多くのコアを搭載した Linux マシンになるので、基本的に大きな問題はありませんが、ここで議論したくない理由から、64 ビット Windows マシンで Cygwin で開発する必要があります。

32 ビット バージョンの gcc を使用すると、どこかでひどく問題が発生し、実際には CPU の数に等しい係数で高速になるはずの非常に粗雑なシングル スレッド バージョンよりもアプリケーションが約 60 倍遅くなります。 . それは一緒に働くことを不可能にします。何が原因なのか本当にわかりません。とにかく、代わりに MinGW の 64 ビット バージョンを使用することにしx86_64-w64-mingw32-gcc-4.5.3ました。

補足: スローダウンは私のマルチスレッドの欠陥ではないと確信しています。マルチスレッド アプリケーションは、Linux マシン上で正しく、より高速に動作します。

実際の問題

GMP の設定は簡単で、問題なくソースからコンパイルでき、魅力的に機能します。次の簡単な例をコンパイル-fopenmpすることも魅力のように機能します。

しかし、それを実行すると私に

この質問は承知しておりますが、公式の Cygwin リポジトリ以外のバイナリをダウンロードせずに動作させたいと考えています。私の例はスイッチでコンパイルされたので、-fopenmpこれも非常に可能であると確信しています。

誰かがそれを手伝ってくれますか?事前にたくさんありがとう。

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

c++ - typedef - プリミティブ型からプリミティブ型へ

プリミティブ型から別のプリミティブ型への typedef を持つことは有効な C++ ですか?

VS 2012 では、警告は発行されますが、正常にコンパイルされます。

警告 C4091: 'typedef': 変数が宣言されていない場合、'long' の左側は無視されます

しかし、gcc-4.3.4 では失敗します。

エラー: 宣言は何も宣言していません。

標準に準拠しているコンパイラはどれですか?

PS: プロダクション コードではこのようなことは書きません。ちょうど思考とチェックを思いつきました。

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

c++ - G++ 4.5.0 の std::forward_as_tuple

私はこの関数を差し迫って必要としていますstd::forward_as_tupleが、GCC 4.5.0 の使用に制限されています (これは自分自身を配置するのに悪い状況であることはわかっていますが、それは私にとって多くの問題を解決するので、皮肉な発言は控えてください最小)。<tuple>ヘッダーには関数が含まれていないようです(本来あるべき)ので、私の質問は次のとおりです。

  1. 他のヘッダーに隠されていますか?(これは以前にも発生しましたが、特定するのは困難です。)
  2. 独自の実装を展開することは可能ですか? つまり、GCC 4.5.0 で実装されているc++11 の部分で実装可能ですか? 誰かが実際にこれを行う方法を知っている場合のボーナス。
0 投票する
1 に答える
996 参照

linux - gcc または binutils のアップグレードへの影響

Red Hat Enterprise Linux 5.8 を使用して folly をコンパイルしたいのですが、gcc は 4.1.2 です。しかし、愚行には gcc >=4.6 が必要です。そのため、gcc を 4.6、おそらく binutils などにアップグレードする必要があります。新しいツールチェーンが *.a *.so などのバイナリ ファイルを生成する場合、それらを古い Red Hat Enterprise Linux 5.8 で実行すると、問題が発生したり不安定になりますか?

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

c++ - g ++警告:実行されることはありません

C++プロジェクトを継承しました。makefileを介してgcc4.1.2を使用してRHEL5.5でビルドしています。プロジェクトは巨大で(数百のファイル)、一般的にコードはかなり良いです。ただし、コンパイル中に頻繁に、次のようなGCC警告が表示されます。

エラーの原因となっているソースファイルまたは行番号はわかりません。手足に出て、GCCのヘッダーは問題ないと言うので、ここで何が起こっているのでしょうか。私はこれまでこの特定の警告に遭遇したことがありません。

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

c++ - BOOST_STATIC_ASSERT は gcc 4.2 ではコンパイルされませんが、3.4.6 ではコンパイルされます。

3.4.6 と比較して 4.2 でコンパイルするようにプロジェクトを移植しています。

gcc 4.2 で次のコードをコンパイルしているときにエラーが発生しますが、gcc3.4.6 では問題なく動作します。

BOOST_MPL_ASSERT を使用してみましたが、成功しませんでした。

エラーの原因となっているコード行

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

c - 不透明な構造体の配列へのポインター

gcc 4.3 で奇妙な問題が発生しました。それがコンパイラ固有の問題なのか、それとも一般的な C の問題なのかを知りたいと思っていました。確かに、私は非常に奇妙な構造を使用していますが、そうでなければ不可能なルールを適用できるので、気に入っています。プロジェクトはいくつかのモジュールに分割され、各モジュールには不透明な構造があります。ヘッダーに宣言がありtypedef struct <tag> <type>、1 つの c ファイルに a がありstruct tag { ... };、すべての関数が a を介して要素を参照し<type> *ます。

各モジュールは独自の構造を認識しており、他のモジュールの構造は表示されません。1 つのモジュールでは、1 つの要素ではなく、要素の固定配列で作業します。これは、そのモジュールの一部の関数が配列へのポインターで動作することを意味します。そのモジュールを と呼びましょうwdi。だから私は例えば

そして割り当てのために(私は非常に珍しい構文を知っています)、配列への正しいポインタを直接返します。

これは、GNU-C 3.4.6 (Solaris SPARC)、cc の下で、それがコンパイルする sun コンパイラ v12 でもうまく機能します (ただし、アプリの別の部分が壊れているため、テストできませんでした)。ただし、gcc 4.3.3 (4.4.6 x86-64 および 4.6.2 ARM でもテスト済み) では、そうではありません。コンパイル エラーが発生しますarray type has incomplete element type。その段階でコンパイラがその情報を必要とする理由がわかりません。他の不透明な構造のサイズも必要ありません。

gccのバグですか?

基準は何と言っていますか?

私はそれについて何かを見つけることができませんでした。GNU にバグレポートを提出する必要がありますか?

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

linux - Linux での FBX SDK のビルド

Ubuntu 12.04 でコンパイルされたサンプルの 1 つを取得しようとしています

私は使用しています make -f Makefile-x64-static

ただし、エラーが発生します make: gcc4: Command not found

makefile で gcc4 から gcc に切り替えてみました。

ただし、コンパイルエラーが発生します note: #pragma message: IMPORTANT NOTE: The FBX SDK API changed substantially. Please define FBXSDK_NEW_API in your project and fix compilation errors as instructed in fbxsdk_compatibility.h.

そしてリンクエラー /usr/bin/ld: cannot find -luuid

ヒントをいただければ幸いです。