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

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

5
何かを「投げる」とき、それはメモリのどこに保存されますか?
何かがthrownの場合、スタックはキャッチされるまで「巻き戻され」、各関数コンテキストのスタック上のクラスインスタンスのデストラクタが実行されることを理解しています(そのため、デストラクタから例外をスローしないでください)。 -あなたは2番目のものを投げることになるかもしれません)...しかし、これが起こっている間、私が投げたオブジェクトはメモリのどこに保存されているのだろうか? 実装に依存しますか?もしそうなら、最も人気のあるコンパイラで使用される特定の方法はありますか?

3
ミューテックスをロックせずにpthread_cond_signalを呼び出す
pthread_cond_signalを呼び出す前にミューテックスをロックし、呼び出した後にミューテキストのロックを解除する必要があることをどこかで読みました。 pthread_cond_signal()ルーチンは、条件変数を待機している別のスレッドに信号を送る(またはウェイクアップする)ために使用されます。ミューテックスがロックされた後に呼び出す必要があり、pthread_cond_wait()ルーチンを完了するためにミューテックスのロックを解除する必要があります。 私の質問は、ミューテックスをロックせずにpthread_cond_signalまたはpthread_cond_broadcastメソッドを呼び出しても大丈夫ではないかということです。

12
CまたはC ++で構造体を返すのは安全ですか?
私が理解しているのは、これを行うべきではないということですが、このようなことを行う例を見たことがあると思います(コードは必ずしも構文的に正しいとは限りませんが、アイデアはそこにあります) typedef struct{ int a,b; }mystruct; そして、ここに関数があります mystruct func(int c, int d){ mystruct retval; retval.a = c; retval.b = d; return retval; } このようなことをしたい場合は、mallocされた構造体へのポインターを常に返す必要があることを理解しましたが、このようなことを行う例を見たことがあると確信しています。これは正しいです?個人的には、常にmallocされた構造体へのポインターを返すか、関数を参照してパスを実行し、そこで値を変更します。(私の理解では、関数のスコープが終了すると、構造を割り当てるために使用されたスタックはすべて上書きされる可能性があります)。 質問に2番目の部分を追加しましょう:これはコンパイラによって異なりますか?もしそうなら、デスクトップ用のコンパイラの最新バージョン(gcc、g ++、Visual Studio)の動作はどうなりますか? 問題についての考え?


3
ラムダを受け入れる関数を宣言するにはどうすればよいですか?
標準ライブラリ(などstd::find)でラムダを使用する方法を説明する多くのチュートリアルをインターネットで読みました。それらはすべて非常に興味深いものでしたが、自分の関数にラムダを使用する方法を説明するチュートリアルは見つかりませんでした。 例えば: int main() { int test = 5; LambdaTest([&](int a) { test += a; }); return EXIT_SUCCESS; } どのように宣言すればよいLambdaTestですか?その最初の引数のタイプは何ですか?次に、引数として「10」を渡す無名関数を呼び出すにはどうすればよいですか?
82 c++  lambda  c++11 

2
単に引数に展開するPROTOTYPEマクロのポイントは何ですか?
を含むヘッダーファイルがあります #define PROTOTYPE(s) s そのポイントは何ですか?入力をそれ自体に置き換えるだけのようです。 その周りには他にもたくさんのディレクティブがありますが、定義されているかどうかをチェックしたばかりのベアリングがあるように見える唯一のディレクティブです#ifndef PROTOTYPE。これを行うHDF4ヘッダーファイルの場所をいくつか見つけました#define PROTOTYPE。だから、それのどれも私の質問を本当にクリアしません。それでもかなり役に立たないようです。 使用方法は次のとおりです。 CS_RETCODE clientmsg_callback PROTOTYPE(( CS_CONTEXT * context, CS_CONNECTION *connection, CS_CLIENTMSG *clientmsg)); これは、Sybase OpenClientを使用するプロジェクトの一部です。clientmsg_callbackは後でここで使用されます: ct_callback(context, NULL, CS_SET, CS_CLIENTMSG_CB, (CS_VOID *)clientmsg_callback); ここからサンプルプログラムを終了します。 http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc35570.1570/html/clcprgde/clcprgde10.htm clientmsg_callbackは後で実装されます。サンプルはもともとC ++ではなくCを念頭に置いて書かれたと思います。おそらくそれはそれと関係がありますか?
82 c++  macros 

4
`const auto`には何か意味がありますか?
質問は十分明確だと思います。ウィルautoキーワードのconstネスを自動検出、または常に例えばがあっても、非const型を返します。関数の2つのバージョン(1つは戻るものconst、もう1つは返さないもの)。 念のため、const auto end = some_container.end()forループの前に使用しますが、これが必要かどうか、または通常とは異なるかどうかはわかりませんauto。
82 c++  c++11  constants 


21
お気に入りのプロファイリングツールは何ですか(C ++用)[クローズ]
現在のところ、この質問は私たちのQ&A形式には適していません。回答は事実、参考資料、または専門知識によって裏付けられることを期待していますが、この質問は、討論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてガイダンスを入手してください。 8年前に閉鎖されました。 これまで、RationalQuantifyのみを使用してきました。IntelのVTuneについて素晴らしいことを聞いたことがありますが、試したことはありません。 編集:私は主にコードをインストルメント化するソフトウェアを探しています。それが非常に良い結果を得る唯一の方法だと思います。 参照: Windows上のネイティブC ++に適したプロファイラーは何ですか?

4
インラインアセンブリコメントを追加すると、GCCで生成されたコードにこのような根本的な変更が生じるのはなぜですか?
だから、私はこのコードを持っていました: constexpr unsigned N = 1000; void f1(char* sum, char* a, char* b) { for(int i = 0; i < N; ++i) { sum[i] = a[i] + b[i]; } } void f2(char* sum, char* a, char* b) { char* end = sum + N; while(sum != end) { *sum++ = …

3
std :: futureのステータスを取得します
std::futureが終了したかどうかを確認することはできますか?私が知る限り、それを行う唯一の方法wait_forは、ゼロの期間で電話をかけ、ステータスがそうであるかどうかを確認することreadyですが、より良い方法はありますか?

3
符号付き整数オーバーフローはC ++でも未定義の動作ですか?
ご存知のように、符号付き整数オーバーフローは未定義の動作です。しかし、C ++ 11のcstdintドキュメントには興味深いものがあります。 幅がそれぞれ正確に8、16、32、64ビットで、パディングビットがなく、負の値に2の補数を使用する符号付き整数型(実装が型を直接サポートしている場合にのみ提供) リンクを見る そして、ここに私の質問があります:標準では、、、および負の数は2の補数であると明示的に述べられているint8_tのでint16_t、これらのタイプのオーバーフローは未定義の動作ですか?int32_tint64_t 編集私はC ++ 11とC11標準をチェックしました、そしてここに私が見つけたものがあります: C ++ 11、§18.4.1: ヘッダーは、C標準の7.20と同じように、すべての関数、タイプ、およびマクロを定義します。 C11、§7.20.1.1: typedef名はintN_t、幅N、パディングビットなし、2の補数表現の符号付き整数型を指定します。したがって、int8_tは、正確に8ビットの幅を持つそのような符号付き整数型を示します。

15
std :: fillを使用して、ベクトルに増加する数値を入力します
vector<int>usingを入力したいのですstd::fillが、1つの値の代わりに、ベクトルには後に昇順で数値を含める必要があります。 関数の3番目のパラメーターを1つ繰り返すことでこれを達成しようとしましたが、これでは1または2で満たされたベクトルしか得られません(++演算子の位置によって異なります)。 例: vector<int> ivec; int i = 0; std::fill(ivec.begin(), ivec.end(), i++); // elements are set to 1 std::fill(ivec.begin(), ivec.end(), ++i); // elements are set to 2
82 c++  stl 

5
Linuxでセグメンテーション違反をキャッチする方法は?
サードパーティのライブラリクリーンアップ操作でセグメンテーション違反をキャッチする必要があります。これは、プログラムが終了する直前に発生することがあり、この本当の理由を修正することはできません。Windowsプログラミングでは、これは__try --__ catchで実行できます。同じことを行うためのクロスプラットフォームまたはプラットフォーム固有の方法はありますか?Linux、gccでこれが必要です。

3
Qt「プライベートスロット:」これは何ですか?
使い方はわかりますが、構文が気になります。「プライベートスロット」とは何ですか? クラス定義でprivateキーワードと:の間に何かを見たことがありません。ここで起こっている素晴らしいC ++の魔法はありますか? そしてここの例: #include <QObject> class Counter : public QObject { Q_OBJECT public: Counter() { m_value = 0; } int value() const { return m_value; } public slots: void setValue(int value); ...
82 c++  qt  signals-slots 

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