タグ

c++とcに関するmoozのブックマーク (29)

  • GitHub - google/sanitizers: AddressSanitizer, ThreadSanitizer, MemorySanitizer

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - google/sanitizers: AddressSanitizer, ThreadSanitizer, MemorySanitizer
    mooz
    mooz 2013/04/28
  • GitHub - Golevka/emacs-clang-complete-async: An emacs plugin to complete C and C++ code using libclang

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - Golevka/emacs-clang-complete-async: An emacs plugin to complete C and C++ code using libclang
    mooz
    mooz 2012/10/21
    Completion server with libclang communicates with Emacs
  • https://github.com/Constellation/iv/blob/master/iv/lv5/railgun/op.h

    mooz
    mooz 2012/06/20
    プリプロセッサを駆使して enum の定義とその文字列を定義
  • C++用xUnitでのテストの書き方 - 2009-11-07 - ククログ

    注: 長いです。 スクリプト言語でのxUnit実装を使ったことがある方なら、テストを定義するだけでテストが実行されることが当たり前ではないでしょうか。c2.comのWikiによると、これはTest Collectorというそうです。定義したテストを自動的に集めてくる機能のことです。 一般的にTest Collectorの機能は言語が提供するリフレクション機能やメタプログラミング機能を使って実現されます。 例えば、Rubyのtest-unit 2.xでは、リフレクションを使う方法とメタプログラミングを使う方法の両方をサポートしています。リフレクションを使う方法ではObjectSpace.each_object(Class)ですべてのクラスを取得し、その中のTest::Unit::TestCaseのサブクラスを集めます。メタプログラミングを使う方法ではTest::Unit::TestCase.

    C++用xUnitでのテストの書き方 - 2009-11-07 - ククログ
    mooz
    mooz 2011/12/28
    素晴らしい記事.様々なテストツールに対する所感がまとめられている.cutter.
  • Deep C

    Programming is hard. Programming correct C and C++ is particularly hard. Indeed, both in C and certainly in C++, it is uncommon to see a screenful containing only well defined and conforming code.Why do professional programmers write code like this? Because most programmers do not have a deep understanding of the language they are using.While they sometimes know that certain things are undefined o

    Deep C
    mooz
    mooz 2011/10/10
  • 「CやC++の速度面における優位性は今後なくなる」という話

    Koichi Nakamura @9_ties 「CやC++の速度面における優位性は今後なくなる」というかむしろ他の言語に追い越されると思っているけど、ちゃんとその根拠を整理してみよう。 2011-05-20 00:25:27 Koichi Nakamura @9_ties CやC++はメモリ最適化と自動並列化が他の言語に比べて難しいから、ヘテロジニアスマルチコア向けの最適化がうまくできないというのは良いと思う。で、ハードウェアがどの程度上手く自動化してくれるか?が問題。ここの効率が良いなら別に言語は何でも良い。 2011-05-20 01:05:17

    「CやC++の速度面における優位性は今後なくなる」という話
  • C++ Library Links

    このページの他に、岡野原さんの "C++の便利ツール・ライブラリ" がオススメです。 標準ライブラリ STL その1。主に、リストやマップなどのコレクションに関する generic なデータ構造とアルゴリズム。 iostream その2。ストリーム入出力。 C.std その3。まだまだ現役。 boost 準標準。上の3つを超強力にした/するライブラリ達の集合体。 並列・ネットワーク・XML TBB (Thread Building Blocks) スレッドセーフなコンテナやスレッドをフル活用した並列アルゴリズムなど TinyXML 名前の通り軽量でまとまってるXMLパーザ。 MiX Minimalists XML parser。同じくXMLパーザ。 libcurlpp FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE, LDAP によるフ

  • ICU - International Components for Unicode

    2024-04-17: ICU 75 is now available. It updates to CLDR 45 (beta blog) locale data with new locales and various additions and corrections. C++ code now requires C++17 and is being made more robust. The CLDR MessageFormat 2.0 specification is now in technology preview, together with a corresponding update of the ICU4J (Java) tech preview and a new ICU4C (C++) tech preview. See Downloading ICU > ICU

  • Pre-defined Compiler Macros

    mooz
    mooz 2011/05/13
    各コンパイラの #define するマクロ一覧
  • Precompiled header - Wikipedia

    mooz
    mooz 2011/03/05
    .phc, .gch
  • Home - GameDev.net

    mooz
    mooz 2011/02/11
    C/C++ のヘッダファイルに関する慣習
  • でっつ :: Entries :: お母さんみたいにもっと3ヶ月前に教えて欲しい

    お母さんみたいにもっと3ヶ月前に教えて欲しい Posted by admin on the 28th of 3 月, 2008 at 12:00 am under 未分類.    This post has no comments. ccacheを使えば、C++のコードのコンパイルが死ぬほど遅くても大丈夫という情報が。これはheaderファイルなど頻繁には変更しないような部分のコンパイル結果を自動的にキャッシュしてくれるソフトウエアだ。よっぽどのことがないかぎり、一人で開発しているコードでは、includeする色々なheaderファイルのほうが、自分で入力するソースコードより多い。しかも、template programmingを使いまくるBoost Spiritのようなinculdeするheaderが大きくて、構文解析の処理量が多いライブラリを利用していると、明らかにheaderのせいで

    mooz
    mooz 2010/09/09
    ccache. ヘッダファイルなど, 頻繁に変更されない部分のコンパイル結果を自動的にキャッシュしてくれるソフト.
  • C++の便利ツール・ライブラリ - DO++

    フルタイムで働きはじめて4ヶ月。 いろんなことがありました。 今日はインターンが来ているということもあり日頃のC++コーディングライフの中で大変重用しているツールを紹介します。といってもどれも有名なツールでググれば解説がでてくるとは思いますので、一言ずつだけ紹介してみます。みなさんも何かよさげなライブラリ・ツールがありましたら教えてください。 - valgrind/callgrind/cachegrind プログラムの実行結果を解析するツール群。まぁ、王道であえて紹介する必要はないかもしいませんが.。valgrindはプログラムのどこかでメモリが漏れているかどうかのチェックに使います.コードのどの部分で確保した領域がどこで漏れているかまで追跡することができます valgrind --leak-check=full command プログラムのどのが計算量的にボトルネックになっているかを調べ

    C++の便利ツール・ライブラリ - DO++
    mooz
    mooz 2010/08/17
    gtest, glog, re2, cmdline, waf, openMP, Eigen
  • モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人

    まだC, C++がないようなので書いてみた。主にLinux(DebianとかUbuntu)での環境構築について。 コンパイラ まずはapt-getでコンパイラをインストールする。UbuntuやDebianなら以下のコマンドでgccやg++および標準ライブラリ等がインストールされる。 $ sudo apt-get install build-essential デバッグツール デバッガおよびデバッグツールは少なくとも以下の三つは入れる。(あとltraceも欲しいかな?) GDB 言わずと知れたGNUのデバッガ Valgrind メモリリークや不正メモリアクセスの検出 strace システムコールのトレース $ sudo apt-get install gdb valgrind strace ビルドツール C, C++のビルドツールといえばまずmakeが浮かぶけど、最近ではSConsやCMak

    モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人
    mooz
    mooz 2010/08/01
    テスト, テストカバレッジ, ビルドツール SCons, プロファイラ, などなど. C/C++ でこういった記事はあまり見ないので大変ありがたい.
  • 本の虫: 邪悪なC形式のキャストにしかできないこと

    注意:邪悪で汚らわしいC形式のキャストは、いやしくもC++プログラマたる者は、使うべからず C++では、玉虫色のC形式のキャストの機能を、三つに分割した。static_cast、reinterpret_cast、const_castである。しかし、この三種のキャストでは、C形式のキャストを完全に代替できないという声をよく聞く。曰く、「どうしても書けないキャストがある」と。 それはよく聞く話だが、では実際にどのようなキャストなのかということは、誰も審らかにしない。誰も知らないキャストであれば、特に使えなくても問題ないはずだ。ただし、「C形式のキャストならばできるキャストが、新しいキャストを組み合わせてもできない。どんなキャストかは知らないが、とにかくできないと聞いている。故に新しいキャストはクソだ」などという論調で、C++の改良されたキャストを使わぬC畑の外道がしゃしゃり出てくるのも困る。そ

    mooz
    mooz 2010/07/06
    キャストについて
  • Linus氏のC++に対する最近の否定的見解 | taro-nishinoの日記 | スラド

    最近、Linus氏はまたしてもReal World TechnologiesのModerated DiscussionsフォーラムでC++に対する否定的見解を投稿したことは皆さんも御存知でしょう。主要な投稿は以下の5つです。 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110563&threadid=110549&roomid=2 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110577&threadid=110549&roomid=2 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110618&threadid=110549&roomid=2 ht

    mooz
    mooz 2010/06/30
    興味深い意見.
  • C言語におけるメモリプールの実現方法 - S.T.K Wiki

    メモリプール メモリプールとはあらかじめまとまったメモリ領域を一括で確保した後に確保したメモリ領域を使ってメモリにデータを割り当てる手法、 もしくは確保したメモリ領域をプログラムから効率的に使用/管理できるようなアルゴリズム/データ構造を指す。 CようにGC(ガベージコレクション)を持たない言語ではヒープ領域から確保したメモリの解放はプログラマの責任で行う必要がある。 しかし、実際にCやC++でプログラミングしたことがあるならわかるように確保したメモリを適切なタイミングで 解放するのはとても難しいとまでは言わないまでもあまり簡単なことではない。 単にfreeを呼び出すのを忘れたり、もしくはリストやツリーのような少しでも複雑なデータ構造を扱う際に割り当てられたメモリを適切に解放できずにリークしてしまうようなことは普通に起こりうる。 モダンなOSではプログラム終了後にそのプログラムに割り当てら

    mooz
    mooz 2010/06/16
    メモリプールについて. Linux には mpool という機構もあり. Apache Portable Runtime や nginx でのアラインメントについて.
  • const char* const

    const char* const の2つのconstがそれぞれが何の値を変更不可にするのかのまとめ。 const char* char* const const char* const const char* の変数は、定数データへのポインタです。中身の変更不可、アドレスの変更可です。 覚え方 *「アスタリスク」は、その左側すべてに係る。 ↓ 「const char」のポインタ ↓ 「文字を変更不可能な文字列」へのポインタ ↓ 中身の変更は不可、アドレスの変更は可 char szAAAAA[ ] = "AAAAA"; char szBBBBB[ ] = "BBBBB"; const char* pBuffer = szAAAAA; // 定数データへのポインタ pBuffer[1] = 'C'; // 不可(コンパイルエラー) pBuffer = szBBBBB; // 可(正しい) c

    mooz
    mooz 2010/06/01
    const char* => 中身の変更不可. char *const => アドレスの変更不可. const char* const => どちらの変更も不可.
  • ヘッダインクルードを減らそう - ryouke's sub page

    なぜか 全能なるCommon.h // プログラム内のすべてのヘッダをインクルードします。 // この便利なヘッダさえインクルードしておけば、他に面倒なインクルードは必要ありません! #pragma once // このファイルの2重インクルード防止 #include "Module1.h" #include "Module2.h" #include "Module3.h" // 以下果てしなく続く このファイルを(当に)プログラム中の全ソースからインクルードした場合、 Module1.h内の字下げを少し修正するだけで、全ソースがコンパイルされることになる。 これはまったくの無駄なファイル依存関係といえる。 あるソースファイルが当に必要としていないヘッダファイルは、インクルードしてはならない。 コンパイル中に優雅に紅茶を飲む楽しみを失いたくなければ、そのままでよいと思われるが、 他人に

    mooz
    mooz 2010/05/23
    ヘッダファイルに関する考察
  • データ型のアラインメントとは何か,なぜ必要なのか?

    以前このサイトとブログに,何度かアラインメントに関する記事を書きました (サイト内関連ページ参照). そのせいか「アラインメント」で検索して来てくれる人が多いので, 過去の記事に加筆修正してこのページを新たに作成しました. 加筆した点は次のとおりです. アラインメントとメモリアクセス回数の関係をわかりやすくするため, (ほんの少し) 図を導入しました. 「データがアラインされていないとメモリアクセス回数が増える」 と言葉で説明しているサイトは多いのですが, 図で示しているところはまだ見たことありません. アラインされていないアドレスにデータを書き込む場合, 読み出しの場合以上にメモリアクセス回数がかかる可能性があることを追記しました. 以前は「複合データ型 (配列,構造体,共用体) のアラインメント」はほとんど自明のことだと思っていたので軽く流していましたが, 意外なことにこれを解説してい

    mooz
    mooz 2010/05/04
    素晴らしく力が入っており分かりやすい.