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

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

8
C ++ 03とC ++ 11の間に、実行時に検出できる違いがあるとすれば、どのようなものですか?
Cコンパイラーでコンパイルすると0を返し、C ++コンパイラーでコンパイルすると1を返す関数を書くことができます(取るに足らない解決策#ifdef __cplusplusは興味深いもので はありません)。 例えば: int isCPP() { return sizeof(char) == sizeof 'c'; } もちろん、上記がとsizeof (char)同じでない場合にのみ機能しますsizeof (int) 別のよりポータブルなソリューションは次のようなものです: int isCPP() { typedef int T; { struct T { int a[2]; }; return sizeof(T) == sizeof(struct T); } } 例が100%正しいかどうかはわかりませんが、あなたは考えを理解しています。同じ関数を書く方法は他にもあると思います。 C ++ 03とC ++ 11の間に、実行時に検出できる違いがあるとすれば、どのようなものですか?言い換えると、それが適合C ++ 03コンパイラーによってコンパイルされたかC ++ 11コンパイラーによってコンパイルされたかを示すブール値を返す同様の関数を作成することは可能ですか? bool isCpp11() …


2
3つの主要なC ++コンパイラでコンパイルが異なるプログラム。どちらが正しいですか?
前の質問の興味深いフォローアップとして(ただし、実用的にはそれほど重要ではありません)、 C ++では、変数を宣言するときに変数名を括弧で囲むことができるのはなぜですか。 括弧内の宣言と注入されたクラス名機能を組み合わせると、コンパイラの動作に関して驚くべき結果になる可能性があることがわかりました。 次のプログラムを見てください。 #include <iostream> struct B { }; struct C { C (){ std::cout << "C" << '\n'; } C (B *) { std::cout << "C (B *)" << '\n';} }; B *y = nullptr; int main() { C::C (y); } g ++ 4.9.2でコンパイルすると、次のコンパイルエラーが発生します。 main.cpp:16:10: error: cannot …

12
const char *連結
次のような2つのconst charを連結する必要があります。 const char *one = "Hello "; const char *two = "World"; どうすればいいですか? char*Cインターフェースを備えたサードパーティのライブラリからこれらのが渡されたため、std::string代わりに単純に使用することはできません。

12
CはC ++のサブセットではありませんか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 この質問を改善する CはC ++のサブセットであると多くの本を読みました。 一部の書籍では、細かい部分を除いて、 CはC ++のサブセットであるとしています。 コードがCでコンパイルされ、C ++ではコンパイルされないケースは何ですか?
116 c++  c 


2
boost :: algorithm :: joinの良い例
私は最近boost :: algorithm :: joinを使用したかったのですが、使用例を見つけることができず、この1つの関数を使用するためだけにBoost Rangeライブラリの学習に多くの時間を費やしたくありませんでした。 文字列のコンテナで結合を使用する方法の良い例を誰かが提供できますか?ありがとう。
116 c++  string  boost  join 

5
externテンプレートの使用(C ++ 11)
図1: 関数テンプレート TemplHeader.h template<typename T> void f(); TemplCpp.cpp template<typename T> void f(){ //... } //explicit instantation template void f<T>(); Main.cpp #include "TemplHeader.h" extern template void f<T>(); //is this correct? int main() { f<char>(); return 0; } これはを使用する正しい方法ですかextern template、またはこのキーワードを図2のようにクラステンプレートにのみ使用しますか? 図2:クラステンプレート TemplHeader.h template<typename T> class foo { T f(); }; TemplCpp.cpp template<typename …
116 c++  templates  c++11  extern 


17
C ++での参照渡し時のパラメーターのデフォルト値
パラメータを参照渡しする際に、関数のパラメータにデフォルト値を与えることは可能ですか?C ++ たとえば、次のような関数を宣言しようとすると、 virtual const ULONG Write(ULONG &State = 0, bool sequence = true); これを行うとエラーが発生します。 エラーC2440: 'デフォルト引数': 'const int'から 'unsigned long&'に変換できません 'const'以外の参照は非左辺値にバインドできません

2
src /のすべての.cppファイルをobj /の.oにコンパイルしてから、。/のバイナリにリンクできますか?
私のプロジェクトディレクトリは次のようになります。 /project Makefile main /src main.cpp foo.cpp foo.h bar.cpp bar.h /obj main.o foo.o bar.o 私は何を私のメイクをしたいと思い、すべてのコンパイルすることです.cpp内のファイル/srcにフォルダを.o内のファイル/objのすべてのリンク、その後、フォルダ.o内のファイルを/obj最上位レベルのフォルダに出力バイナリに/project。 私はメイクファイルの経験がほとんどないので、これを達成するために何を検索すればよいか本当にわかりません。 また、これはこれを行う「良い」方法ですか、それとも私がやろうとしていることに対してより標準的なアプローチがありますか?

11
なぜ標準C ++ライブラリに `int pow(int base、int exponent)`がないのですか?
見つけられないだけなのだと思います。C ++ pow関数がfloatsおよびdoubles 以外の「電源」関数を実装しない理由はありますか? 実装が簡単であることは知っています。標準ライブラリにあるべき作業をしているように感じます。堅牢なパワー関数(つまり、一貫した明示的な方法でオーバーフローを処理する)を書くのは楽しいものではありません。


5
何です.h.gchファイル?
私は最近、G ++でプログラムを作成しなければならないクラスプロジェクトを持っていました。 私はmakefileを使用しましたが、何らかの理由で.h.gchファイルが時々残されました。 時々、これはコンパイルに影響を及ぼさなかったが、しばしば修正された、または意味のない問題に対してコンパイラーがエラーを発行する結果になることがありました。 2つの質問があります。 1).h.gchファイルとは何ですか?そして 2)クリーンアップされていないのになぜこのような問題が発生するのですか?
116 c++  g++ 

4
forループ内のifステートメントを回避しますか?
私は次のようなWriter機能を持つ呼び出されたクラスを持っていますwriteVector: void Drawer::writeVector(vector<T> vec, bool index=true) { for (unsigned int i = 0; i < vec.size(); i++) { if (index) { cout << i << "\t"; } cout << vec[i] << "\n"; } } パフォーマンスを心配しながら、コードを重複させないようにしています。関数では、私のif (index)すべてのラウンドでチェックを行っていますforは、結果は常に同じですループのます。これは「パフォーマンスの心配」に反します。 for-ループの外側にチェックを配置することで、これを簡単に回避できました。ただし、重複したコードが大量に取得されます。 void Drawer::writeVector(...) { if (index) { for (...) { cout << i << …

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