問題タブ [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 投票する
2 に答える
2755 参照

templates - 複数のコピーコンストラクターが指定されました

Visual C ++ 2010では、次のようなクラスがあります。

C ++標準によれば、行AとBの両方がコピーコンストラクターと見なされ、Cは変換コンストラクターです。複数のコピーコンストラクターを宣言したという警告を受け取ったのは当然のことです。ただし、それらのいずれかを削除すると、static_assertが失敗し、コードがコンパイルされません。つまり、テンプレートコンストラクターが制御を受け取りました。

この振る舞いは関数のオーバーロードのルールに従っていると確信しています。しかし、これは2つのルールの矛盾ですか?AとBがコピーコンストラクターであり、そのうちの1つが宣言されている場合、オブジェクトをコピーしようとしても、テンプレートにドロップしないでください。

更新:N3242、12.8.7によると、

「メンバー関数テンプレートは、クラスオブジェクトのそのクラスタイプのオブジェクトへのコピーを実行するためにインスタンス化されることはありません。」

正しい実装は次のとおりです。

  • AまたはB、あるいはその両方を削除しても、アサートエラーは発生しません。
  • ラインBが削除された場合、bは定数であるため、cの構築は失敗するはずです。
  • 両方の行が削除された場合、コンパイラはクラスのコピーコンストラクタを生成する必要があります。
  • 両方の行が存在する場合にユーザーに警告するのは実装次第です。

任意のコメント?

0 投票する
6 に答える
682 参照

c - 複合リテラルを使用して、配列内のすべての要素を値で初期化します

上記の式では、最初の要素のみが1で初期化されます。複合リテラル(memsetではない)を使用して、値ですべての要素を初期化するにはどうすればよいですか?

UNIXでGCC4.2を使用してコンパイルしています。

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

c++ - 同じ古い話-VSvsGCC 4.6.1

以下のコードはVS2010で正常にコンパイルされますが、gcc4.6.1ではコンパイルできません。

gccからのエラー:

* C:... \ Calculator_engine_impl.h | 20 |エラー:'(std :: string {aka std :: basic_string})(__ gnu_cxx :: __ normal_iterator>&、__gnu_cxx :: __ normal_iterator>&)'の呼び出しに一致しません| *

0 投票する
6 に答える
95 参照

c - このトリミング機能が正しく機能しない理由がわかりません

================================================== =============================

================================================== =============================

私は文字列を持っています:

'ABCDEF / G01'

上記の関数は、スペースを削除して私に戻ることになっています。

'ABCDEF/G01'

代わりに、私が返すのは次のとおりです。

「ABCDEF/」

何か案は?

注:引用符は、元の文字列にスペースが存在することを示すためのものです。

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

c++ - make_shared create std::shared_ptr? gcc 4.6.2

私はgcc 4.6.2を使用しています。

ベクトルshared_ptrでpush_backしようとしています。

しかし、gcc は毎回エラーを出します。

ここに私のコードライン:

私のgccが与えているエラーは次のとおりです。

私の目には、std::make_shared が std::shared_ptr を作成するというエラーが表示されます。
しかし、gcc では、shared_ptr は名前空間 std::tr1 にあります。
どうすれば修正できますか?

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

ios - Xcode 4.2.1 で openssl をビルドできません

xcode 3.5.2 で openssl をビルドできましたが、最近 Xcode 4.2.1 にアップグレードしました。同じ古い Xcode でビルドしようとすると、エラーが発生します。

Make[1]: /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2: そのようなファイルまたはディレクトリはありません

これに対する解決策はありますか?

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

macos - Macports の GCC を使用してユニバーサル コードをコンパイルできますか?

Apple は GCC 4.6 または GCC 4.7 をサポートしていないため、MacPorts の GCC 4.6/4.7 ビルドに切り替えました。ただし、「ユニバーサル」アーキテクチャでコードをビルドするには問題がありました。

伝統的に、g++ -arch i386 -arch x86_64 ...少なくとも i386/x86_64 アーキテクチャ用にバイナリをコンパイルします。検索を行ったところ、-arch オプションは Apple のコンパイラでのみサポートされていることがわかりました。もちろん、Macports では動作しませんでした。私ができる最善の方法は、 -m32/-m64オプションを使用して、必要なアーキテクチャを指定することです。ただし、これは i386 または x86_64 形式のバイナリのみを生成します。私が本当に望んでいるのは、元の GCC コンパイラで行われたのと同じように、両方のアーキテクチャ (ユニバーサル) でバイナリ ファイルを取得することです。

これはサポートされていませんか、それとも既知の問題ですか? 一晩中 Google で答えを探してみましたが、何も役に立ちませんでした。それで、私だけがこの問題を抱えていて、それを機能させるために本当に重要なことを見逃しているのではないかと疑い始めましたか? 誰かが私にいくつかの提案をしてくれれば本当に感謝しています.

ところで。バリアントをインストールgcc46 +universalしましたが、アーキテクチャごとに個別のバイナリをコンパイルする以外に、本当に普遍的なものは何も生成しませんでした。

興。

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

php - Redhat で PHP から gcc を呼び出す

exec コマンドを使用して、PHP から gcc を呼び出しています。その後、gcc は「stddef.h が見つかりません」などの奇妙なエラーを返します。

PHP はユーザー名「oracle」で実行されています。つまり、「exec」を使用して PHP スクリプトを介して「whoami」を呼び出すと、ユーザー名として oracle が与えられます。

端末でエラーなしで gcc を簡単に呼び出すことができます。

エラーなしで「sudo -u oracle gcc source.c」を呼び出すことができます。

だから私にはとても奇妙です。何か案は???

PS: Fedora と Apache で問題なく動作します。および Apache を使用した Ubuntu で。

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

gcc - コンパイラGCCのコンパイル中にエラーが発生しました

コンパイラをコンパイルするのは皮肉なことです。しかし、このコンパイラの特定のバージョンが必要であり、CentOS5.xリポジトリには最新バージョンのGCCがありません。

必要なバージョンは4.3.2ですが、4.1.1しかありません。

このチュートリアルに従ってgcchttp://www.mjmwired.net/resources/mjm-fedora-gcc.htmlをインストールし、configureで次のパラメーターを使用しました(コンパイル前)。

/root/gcc/gcc-4.3.6/configure --prefix = / opt / gcc43 --program-suffix = 43 --enable-languages = c、c ++ --enable-shared --enable-threads = posix- disable-checking --with-system-zlib --enable -__ cxa_atexit --disable-libunwind-exceptions --disable-multilib

最後のオプション--disable-multilibは、以前のコンパイル試行で発生した別のエラー(長いコンパイル時間の後...)のために私を救います

また、以前の試行でエラーが発生したため、環境変数を設定しました。そのため、次のように設定しました。

これにより、コンパイラはそのディレクトリ内のmpfrおよびgmpライブラリ(必要)を検索できます。

だから、私は'make'コマンドを実行します。

今回はもっと時間がかかったので、私はそれですべて大丈夫でしたが(変数を設定する前の最後の試みでは、コンパイルに約2時間かかりました)

アマゾンウェブサービスでマイクロインスタンスを使用しました。このインスタンスにはシングルコアx86_64プロセッサが1つとRAMが613MBしかないため、コンパイルに約9時間かかりました。

残念ながら、私は再びエラーが発生しました!!、今私はこれを取得しました:

助言がありますか?

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

gcc - gcc で march=native をデフォルトとして使用する方法は?

-march=nativeコマンドラインで何も指定されていない場合にパスするようにスペックファイルを変更する方法はありますか?

デフォルトの specs ファイルの関連事項は次のとおりです。

仕様がどう動くかはわかりません。-march=nativebefore または afterを指定するだけで%(cc1_cpu)は機能しません。-something_wierdただし、の代わりに置くとGCCがエラーを報告するため、この行は有効になります-march=native

私が気づいたもう1つのことは、の%{march=i386:-something_wierd}前に置く%(cc1_cpu)と、gccがエラーを報告するので、何も指定されていない場合は常に渡されるように見えるため、何も指定されていないこととspecファイル-march=i386にあることを区別する方法はありますか?-march=i386

ところで、何をし%>ますか?ドキュメントには明記されていないようです。

MinGW を使用していgcc-4.6.2ます。