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

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

3
単一ファイルのコンパイルフラグを上書きする
プロジェクトをコンパイルするためにフラグのグローバルセットを使用したいと思います。つまり、最上位のCMakeLists.txtファイルで次のように指定しました。 ADD_DEFINITIONS ( -Wall -Weffc++ -pedantic -std=c++0x ) ただし、サブディレクトリ内の特定のファイル(たとえば、 "foo.cpp"としましょう)については、コンパイルフラグを切り替えて-Weffc ++(変更できない商用ライブラリが含まれている)を適用しないようにします。-Wallのみを使用するように状況を簡略化するために、私は次のことを試みました。 SET_SOURCE_FILES_PROPERTIES( foo.cpp PROPERTIES COMPILE_FLAGS -Wall ) ADD_EXECUTABLE( foo foo.cpp ) 、動作しませんでした。私も試しました SET_PROPERTY( SOURCE foo.cpp PROPERTY COMPILE_FLAGS -Wall ) ADD_EXECUTABLE( foo foo.cpp ) そして ADD_EXECUTABLE( foo foo.cpp ) SET_TARGET_PROPERTIES( foo PROPERTIES COMPILE_FLAGS -Wall ) 、どちらも機能しませんでした。 最後に、私はこの定義を削除してみました: REMOVE_DEFINITIONS( -Weffc++ ) ADD_EXECUTABLE( …

5
C ++用のオンライン名デマングラはありますか?[閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 4年前休業。 この質問を改善する かなり長くて紛らわしいリンクエラーが発生します。Webサイトのテキストボックスに貼り付けて、名前を壊さないようにしておけば、それが気に入ります。 誰かがそのようなサービスを知っていますか?
109 c++  demangler 


4
Visual Studio Express 2005で完全に静的にリンクされた.exeを作成するにはどうすればよいですか?
私が現在好んで使用しているC ++環境は、無料で非常に優れたMicrosoft Visual Studio 2005 Expressエディションです。時々私はリリース.exeファイルを他の人に送って満足のいく結果を得ました。しかし最近、私はこの楽しい結果が私が望むより多くの幸運に基づいているという不穏な発見をしました。これらのプログラムの1つを古い(2001年のヴィンテージで、厳密に更新されていない)XPボックスで実行しようとすると、「システムはx.exeを実行できません」(または同様の)メッセージしか表示されませんでした。 一部のグーグルは、このツールセットで静的リンクを指定しても、実際には余分な.dllファイル(msvcm80.dllなど)に依存する単純なhello-world.exeになることを明らかにしました。信じられないほど精巧なバージョンのスケミングシステム(誰でもファイルをマニフェストしますか?)では、正しい.dllバージョンがなければ、.exeを実行できません。私はこのようなものを望まない、または必要としません。最も一般的な分母のWin32操作しか実行せず、古いwin32 OSで実行される、昔ながらの自己完結型.exeが欲しいだけです。 既存のツールセットでやりたいことができるかどうか誰かが知っていますか? ありがとうございました。

7
最適化が有効になっていると異なる浮動小数点結果-コンパイラのバグ?
以下のコードは、最適化の有無にかかわらずVisual Studio 2008で動作します。しかし、それは最適化なしのg ++​​でのみ機能します(O0)。 #include <cstdlib> #include <iostream> #include <cmath> double round(double v, double digit) { double pow = std::pow(10.0, digit); double t = v * pow; //std::cout << "t:" << t << std::endl; double r = std::floor(t + 0.5); //std::cout << "r:" << r << std::endl; return r / …
109 c++  optimization  g++  c++-faq 

5
LPCSTR、LPCTSTR、およびLPTSTR
どう違いますかLPCSTR、LPCTSTRおよびLPTSTR? なぜ我々はに文字列を変換するために、これを実行する必要がありますLV/ _ITEM構造体変数pszText: LV_DISPINFO dispinfo; dispinfo.item.pszText = LPTSTR((LPCTSTR)string);
109 c++  windows  visual-c++  mfc 

4
uint_fast32_tとは何ですか?通常のintおよびuint32_tの代わりに使用する必要があるのはなぜですか?
したがって、typedef:edされたプリミティブデータ型の理由は、低レベルの表現を抽象化し、理解しやすくするためです(型ではuint64_tなく、long long8バイトです)。 ただし、uint_fast32_tと同じtypedefものがありuint32_tます。「高速」バージョンを使用すると、プログラムが高速になりますか?
109 c++  c  types 

6
(A + B + C)≠(A + C + B)とコンパイラの並べ替え
2つの32ビット整数を追加すると、整数オーバーフローが発生する可能性があります。 uint64_t u64_z = u32_x + u32_y; このオーバーフローは、32ビット整数の1つが最初にキャストされるか、64ビット整数に追加される場合に回避できます。 uint64_t u64_z = u32_x + u64_a + u32_y; ただし、コンパイラが追加の順序を変更することを決定した場合: uint64_t u64_z = u32_x + u32_y + u64_a; それでも整数オーバーフローが発生する可能性があります。 コンパイラはそのような並べ替えを行うことができますか、それとも、結果の矛盾に気づき、式の順序をそのまま維持することを信頼できますか?

6
ポインタのこの使用法を予測不可能にするのは何ですか?
私は現在ポインタを学んでおり、私の教授は例としてこのコードを提供しました: //We cannot predict the behavior of this program! #include <iostream> using namespace std; int main() { char * s = "My String"; char s2[] = {'a', 'b', 'c', '\0'}; cout << s2 << endl; return 0; } 彼はコメントで、プログラムの動作を予測することはできないと書いています。正確には何が予測不可能になるのでしょうか?私はそれで何も悪いことを見ません。
108 c++  pointers 

6
関数から「ベクター」を返すのはなぜですか?
このコードを検討してください。このタイプのコードを何度か見ました。wordsローカルベクトルです。関数から返すにはどうすればよいですか? 死なないことを保証できますか? std::vector<std::string> read_file(const std::string& path) { std::ifstream file("E:\\names.txt"); if (!file.is_open()) { std::cerr << "Unable to open file" << "\n"; std::exit(-1); } std::vector<string> words;//this vector will be returned std::string token; while (std::getline(file, token, ',')) { words.push_back(token); } return words; }

11
2 GBを超えるコードでのGCCコンパイルエラー
私は合計で約2.8 GBのオブジェクトコードの膨大な数の関数を持っています(残念ながら、回避策はありません。科学計算...) それらをリンクしようとすると、(予期される)relocation truncated to fit: R_X86_64_32Sエラーが発生し-mcmodel=mediumます。コンパイラフラグを指定することで回避したいと考えました。私が制御していることに加えてリンクされているすべてのライブラリは、-fpicフラグを使用してコンパイルされています。 それでもエラーは解決せず、リンク先のライブラリの一部がPICでコンパイルされていないと思います。 ここにエラーがあります: /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function `_start': (.text+0x12): relocation truncated to fit: R_X86_64_32S against symbol `__libc_csu_fini' defined in .text section in /usr/lib64/libc_nonshared.a(elf-init.oS) /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function `_start': (.text+0x19): relocation truncated to fit: R_X86_64_32S against symbol `__libc_csu_init' defined in .text section in /usr/lib64/libc_nonshared.a(elf-init.oS) /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function …
108 c++  c  gcc  compiler-errors 

2
clangによるコード補完の高速化
clangのコード補完メカニズムを使用しながら、コード補完の潜在的なスピードアップを調査しています。以下に説明するフローは、rtagsで見つけたものです、Anders Bakkenによるでです。 翻訳単位は、変更を監視するデーモンによって解析されます。これは、呼び出されたclang_parseTranslationUnit関数と関連する関数(reparse*、dispose*)によって行われます。ユーザーがソースファイルの特定の行と列で完了を要求すると、デーモンは、最後に保存されたバージョンのソースファイルと現在のソースファイルのキャッシュされた変換単位をに渡しますclang_codeCompleteAt。(Clang CodeComplete docs)。 clang_parseTranslationUnit(CompletionThread :: process、行271から)に渡されるフラグはCXTranslationUnit_PrecompiledPreamble|CXTranslationUnit_CacheCompletionResults|CXTranslationUnit_SkipFunctionBodesです。clang_codeCompleteAt(CompletionThread :: process、行305から)に渡されるフラグはCXCodeComplete_IncludeMacros|CXCodeComplete_IncludeCodePatternsです。 への呼び出しclang_codeCompleteAtは非常に遅くなります。完了場所が正当なメンバーアクセスコードである場合でも、完了を取得するのに約3〜5秒かかりますclang_codeCompleteAt。これは、のドキュメントで言及されている使用目的のサブセットです。これはIDEのコード補完標準では遅すぎるようです。これをスピードアップする方法はありますか?


8
BLASはどのようにこのような極端なパフォーマンスを実現していますか?
好奇心から、私は自分の行列乗算関数とBLAS実装のベンチマークを行うことにしました...結果に驚くことはほとんどありませんでした。 カスタム実装、1000x1000行列乗算の10回の試行: Took: 15.76542 seconds. BLAS実装、1000x1000行列乗算の10回の試行: Took: 1.32432 seconds. これは単精度浮動小数点数を使用しています。 私の実装: template<class ValT> void mmult(const ValT* A, int ADim1, int ADim2, const ValT* B, int BDim1, int BDim2, ValT* C) { if ( ADim2!=BDim1 ) throw std::runtime_error("Error sizes off"); memset((void*)C,0,sizeof(ValT)*ADim1*BDim2); int cc2,cc1,cr1; for ( cc2=0 ; cc2<BDim2 ; ++cc2 ) …
108 c++  fortran 

3
「size_t」対「container :: size_type」
とに違いはsize_tありcontainer::size_typeますか? 私が理解しているのsize_tは、より一般的なものであり、どのsize_typesにも使用できます。 しかしcontainer::size_type、特定の種類のコンテナ用に最適化されていますか?

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