タグ付けされた質問 「c++」

C ++は汎用プログラミング言語です。もともとCの拡張として設計され、構文は似ていますが、現在は完全に異なる言語になっています。このタグは、C ++コンパイラでコンパイルされる(される)コードに関する質問に使用します。特定の標準リビジョン[C ++ 11]、[C ++ 14]、[C ++ 17]または[C ++ 20]などに関連する質問には、バージョン固有のタグを使用します。

10
単一の警告エラーを無効にする
Visual Studioでcppファイルの警告行を1つだけ無効にする方法はありますか? たとえば、例外をキャッチしてそれを処理しないと、エラー4101(参照されないローカル変数)が発生します。その関数だけでこれを無視する方法はありますが、それ以外の場合はコンパイル単位で報告しますか?現時点で#pragma warning (disable : 4101)は、ファイルの先頭に配置していますが、ユニット全体でオフになっていることは明らかです。

8
LinuxホストマシンにRaspberry Piクロスコンパイラをインストールする方法
私のUbuntuマシンでRaspberry Piをクロスコンパイルできるようにしようとしています。 最初の試みでは、Ubuntuリポジトリにあるarm-linux-gnueabiコンパイラを使用していました。私はこれを手に入れました。すべての依存関係を構築し、cmakeプロジェクトでクロスコンパイラを使用することができました。 しかし、私はhfバージョンを使用する必要があると思うので、arm-linux-gnueabihfに切り替えました。その後、これはarmv6であるため、Raspberry Piでは機能しないことに気付きました。 少しグーグルで調べた後、GitHubのビルド済みツールチェーンを見つけました。 ツールチェーンをダウンロードしましたが、「インストール」方法がよくわかりません。ファイルをホームディレクトリに抽出しました。ディレクトリ構造は次のようになります。 /gcc-linearo-arm-linux-gnueabihf-raspbian /arm-linux-gnueabihf /bin (contains g++, gcc, etc) /lib (contains libstdc++ library) /bin (contains arm-linux-gnueabihf-g++, arm-linux-gnueabihf-...) /lib (gcc lib stuff) ディレクトリをINNER binフォルダーに変更すると、ターミナルからテストプログラムを問題なくコンパイルできます。 ~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/ arm-linux-gnueabihf/bin$ g++ test.cpp -o test 次に、ツールのプレフィックスバージョンが含まれるOUTER binフォルダーでテストプログラムをコンパイルしようとしました。 ~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin$ arm-linux-gnueabihf-g++ test.cpp -o test ただし、今すぐ(内部のbinディレクトリの外側から)コンパイラーを使用しようとすると、ツールチェーンに付属しているlibstdc ++共有ライブラリーを見つけることができません。 arm-linux-gnueabihf-gcc: error while loading shared libraries: libstdc++.so.6: …

23
実行可能ファイルのパスを取得する
この質問が以前に尋ねられたことは知っていますが、満足のいく答え、または「いいえ、これを行うことはできません」という決定的な回答がまだないので、もう一度尋ねます。 私がやりたいのは、現在実行中の実行可能ファイルへのパスを、絶対パスとして、または実行可能ファイルの呼び出し元からの相対パスとして、プラットフォームに依存しない方法で取得することだけです。私はboost :: filesystem :: initial_pathが私の問題の答えでしたが、それは質問の「プラットフォームに依存しない」部分のみを処理するようです-それでもアプリケーションが呼び出されたパスを返します。 ちょっとした背景として、これはOgreを使用したゲームで、Very Sleepyを使用してプロファイリングしようとしています。これは、独自のディレクトリからターゲットの実行可能ファイルを実行するため、ロード時にゲームが構成ファイルなどを検出せず、すぐにクラッシュします。構成ファイルへの絶対パスを渡せるようにしたいのですが、実行可能ファイルと一緒に常に存在することがわかっています。Visual Studioでのデバッグについても同様です。作業ディレクトリを設定せずに$(TargetPath)を実行できるようにしたいと思います。
114 c++  boost  executable 

3
ジェネリックラムダはC ++ 14でどのように機能しますか?
autoC ++ 14標準でジェネリックラムダはどのように機能しますか(引数の型としてのキーワード)? それは、C ++テンプレートに基づいていますか?異なる引数型ごとに、コンパイラーは同じ本体を使用して新しい関数を生成しますが、型を置き換えます(コンパイル時のポリモーフィズム)、それともJavaのジェネリック(型消去)に似ていますか? コード例: auto glambda = [](auto a) { return a; };
114 c++  lambda  auto  c++14 


9
2つ以上のコンテナーを同時に反復処理する最良の方法は何ですか
C ++ 11は、コンテナーを反復処理する複数の方法を提供します。例えば: 範囲ベースのループ for(auto c : container) fun(c) std :: for_each for_each(container.begin(),container.end(),fun) ただし、次のようなことを達成するために同じサイズの2つ(またはそれ以上)のコンテナーを反復処理するための推奨される方法は何ですか? for(unsigned i = 0; i < containerA.size(); ++i) { containerA[i] = containerB[i]; }

1
可変個関数のすべての引数でstd :: forwardをどのように呼び出しますか?
私は単に汎用オブジェクトファクトリを作成し、ブーストプリプロセッサメタライブラリを使用して可変テンプレートを作成していました(2010を使用していて、それらをサポートしていません)。私の関数はrval参照を使用std::forwardし、完全な転送を行うため、私は考えさせられました... C ++ 0Xが出て、標準のコンパイラーがあったとき、実際の可変テンプレートでこれを行います。それでも、私std::forwardは議論を呼びかけますか? template <typename ...Params> void f(Params... params) // how do I say these are rvalue reference? { y(std::forward(...params)); //? - I doubt this would work. } 私が考えることができる唯一の方法は... paramsを手動で解凍することを必要とするでしょう、そして私はまだそこにもまだありません。機能するより速い構文はありますか?

19
スイッチ内からループを抜け出す方法は?
次のようなコードを書いています。 while(true) { switch(msg->state) { case MSGTYPE: // ... break; // ... more stuff ... case DONE: break; // **HERE, I want to break out of the loop itself** } } それを行う直接的な方法はありますか? フラグを使用して、スイッチの直後に条件付きブレークを置くことでループから抜けることができることは知っています。C ++にこのための構造が既にあるかどうかを知りたいだけです。

7
C99 stdint.hヘッダーとMS Visual Studio
驚いたことに、C99のstdint.hがMS Visual Studio 2003以降にないことがわかりました。彼らには理由があると確信していますが、誰がどこでコピーをダウンロードできるか知っていますか?このヘッダーがないと、uint32_tなどの有用な型の定義がありません。
113 c++  c  visual-studio  c99 


10
関数ポインターを介したC ++クラスメソッドの呼び出し
クラスメンバー関数の関数ポインターを取得し、後でそのメンバー関数を特定のオブジェクトで呼び出すにはどうすればよいですか?私は書きたいです: class Dog : Animal { Dog (); void bark (); } … Dog* pDog = new Dog (); BarkFunction pBark = &Dog::bark; (*pBark) (pDog); … また、可能であれば、ポインタを介してコンストラクタも呼び出したいです。 NewAnimalFunction pNew = &Dog::Dog; Animal* pAnimal = (*pNew)(); これは可能ですか?可能であれば、これを行うための好ましい方法は何ですか?

9
C ++オブジェクトのインスタンス化
私はC ++を理解しようとしているCプログラマです。多くのチュートリアルでは、次のようなスニペットを使用したオブジェクトのインスタンス化を示しています。 Dog* sparky = new Dog(); これは後で行うことを意味します: delete sparky; それは理にかなっています。さて、動的なメモリ割り当てが不要な場合、上記の代わりに上記を使用する理由はありますか? Dog sparky; そして、sparkyがスコープから外れたら、デストラクタが呼び出されるようにしますか? ありがとう!
113 c++  instantiation 

6
ビジュアルc ++:同じソリューションの他のプロジェクトからの#includeファイル
Visual C ++を使用してゲームに取り組んでいます。別のプロジェクトにいくつかのコンポーネントがあり、プロジェクトの依存関係を設定しました。別のプロジェクトのヘッダーファイルを#includeするにはどうすればよいですか?あるプロジェクトのクラスを別のプロジェクトで使用する方法がわかりません。

9
「int main」です。有効なC / C ++プログラム?
私のコンパイラはそうではないのに、コンパイラがそう思っているように見えるので、私は尋ねます。 echo 'int main;' | cc -x c - -Wall echo 'int main;' | c++ -x c++ - -Wall Clangはこれに関する警告やエラーを発行せず、gccは微妙な警告のみを発行します'main' is usually a function [-Wmain]が、Cとしてコンパイルされた場合のみ-std=です。aの指定は重要ではないようです。 それ以外の場合は、コンパイルして正常にリンクします。しかし、実行すると、SIGBUS(私にとっては)ですぐに終了します。 CとC ++でmain()が何を返す必要があるか(優れた)回答を読む そして、言語仕様をざっと見てみると、メインの機能が必要なように思えます。しかし、gcc ( 'main'は通常は関数です)からの言い回し(およびここでのエラーの不足)は、おそらく別のことを示唆しているようです。-Wmain しかし、なぜ?これには、奇妙なエッジケースまたは「歴史的」な使用がありますか?誰が何を与えるか知っていますか? 私のポイントは、おそらく、これはホストされた環境ではエラーになるはずだと私は本当に思っているということです。
113 c++  c  function  main  entry-point 

17
DLLをロードできません(モジュールが見つかりませんHRESULT:0x8007007E)
.NET 4.0アプリケーションで使用する必要があるアンマネージC ++ APIコードを含むDLLライブラリがあります。しかし、私が自分のdllをロードしようとすると、エラーが発生します。 DLL 'MyOwn.dll'を読み込めません:指定されたモジュールが見つかりませんでした。(HRESULTからの例外:0x8007007E) 私はインターネットで見つけたseveraソリューションを読んで試しました。何も動作しません。 次の方法を試してみました: [DllImport("MyOwn.dll", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs((UnmanagedType.I4))] public static extern Int32 MyProIni(string DBname, string DBuser_pass, string WorkDirectory, ref StringBuilder ErrorMessage); この記事を試してみて、この例を(ダウンロードしたコードから)実行すると、問題なく実行されます(使用されているdllはbin / debugフォルダーにあります) 私は自分のdllを(binフォルダーに依存するすべてのファイルとともに)コピーしました。 私もこのアプローチを試しましたが、同じエラーが発生しました: [DllImportAttribute(MyOwnLibDllPath, EntryPoint="TMproIni")] [return: MarshalAs(UnmanagedType.I4)] public static extern int MyproIni(string DBname, string DBuser_pass, string WorkDirectory, ref StringBuilder ErrorMessage); 助言がありますか?
113 c#  c++  dll  pinvoke 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.