タグ

関連タグで絞り込む (265)

タグの絞り込みを解除

c++に関するtyruのブックマーク (593)

  • C(++)言語: valgrindの使い方

    ubuntu% uname -a Linux ubuntu 2.6.12-10-386 #1 Sat Mar 11 16:13:17 UTC 2006 i686 GNU/Linux ubuntu% valgrind --version valgrind-3.0.1 (0) 目次 Valgrindに含まれるツール Memcheck: メモリエラーを検出する(default) Cachegrind: キャッシュミスを検出する Massif: ヒーププロファイラを使う まとめ valgrindの使い方とエラーメッセージを整理してみた。「valgrind --leak-check=full command」というコマンドラインをよく用いる。これによりメモリ周りのバグを検出出来る。 --tool=cachegrindではプログラム実行時のキャッシュミス率を測定する事が出来る。cg_annotateを

  • 紫ログ:C++のテストフレームワークを試食 - livedoor Blog(ブログ)

    TopCoderの為に少しやる気になってきたところで、Macでフリーで使える C++ のテストフレームワークをいくつか試してみたのでメモ。 CppUnit - C++ Port of JUnit CxxTest googletest - Google C++ Testing Framework Boost.Test CppUnitはテストの記述が若干面倒な気が。表示はシンプルで悪くない。 CxxTestはインストール方法が他と違って少し悩んだが、記述量が少なくて取っつきやすかった。 googletestは記述量が少なめで、赤と緑のカラー表示コンソールで、マクロの種類も豊富。ASSERT マクロと EXPECT マクロの対応も分かりやすい。但し、出たばかりで日語での情報が少ない。 Boost.Testは普段Boostに慣れ親しんでいるなら良いかも。マクロの種類は多め。 とりあえず、goog

  • 発表:新Google C++ テストフレームワーク

    近ごろGoogleは、C++開発向けxUnit(リンク)ベースのテストフレームワークをオープンソース化した。プロジェクトデベロッパのZhanyong Wan氏よると、そのフレームワークは何年もの間数千人のC++デベロッパによりGoogle内部で使用されてきたと言われている。 Googleによると、このリリースで最も注目すべき点は以下のとおりである。 Google Testはポータブルである。GCCおよびMSVCコンパイラの複数バージョンの多様なプラットフォーム上 (LinuxWindowsMac OS Xなど)で、例外の有無を問わず動作する。Windows CEやSymbianのような組み込みシステムにおいても使用することができる。これら向けのビルドツールやテストランナーは多くが開発中で、Linux Autotools(リンク)サポートは環境が整っている。 致命的および非致命的(リンク

    発表:新Google C++ テストフレームワーク
  • C 開発者のための単体テスト入門 ― @IT

  • C++マニアック,よくわかるC++言語プログラミング講座

    What's new 2008/06/30 Google 検索窓をつけてみました。 2008/06/14 身長や体重など複数の基準でソートする例 を追記。 2008/06/14 英文字文書を読んで、文字数の頻度順にソートする例 を追記。 古い What's new 当サイトで提示するサンプルコードは、あまりにも単純明快で、一見つまらないぐらいに見えるはずです。しかし、もしあなたがそう感じたのであれば、それは、ねらいどおりで、大成功と言えます。ちょっと難解と思われている C++ が、つまらなく見えるほど平易に解説されているということですから。 基礎(入門)編 その他(非 C++ 的) エッセー C++ はアセンブリ言語のように軽快であるにもかかわらず、仮想クラスやクラスの継承、オペレータのオーバーロード、そして、テンプレートと、高級言語のプログラミングテクニックを余すところなく駆使で

    tyru
    tyru 2009/04/09
  • 浮動小数点演算ではまった話 - bkブログ

    浮動小数点演算ではまった話 浮動小数点演算のありがちな問題ではまりました。 いろいろ調べているうちに x86 特有のちょっとおもしろい 現象に遭遇したので紹介したいと思います。 パーセンテージの計算 簡単な C のプログラムでパーセンテージを計算しようと思い、 次のようなコードを書きました。 int x, y; ... int a = (double)x / y * 100; int a = x * 100 / y としないのは、 x が大きい場合に x * 100 が オーバーフローを起こす (INT_MAX を越える) ためです。 このコードは一見、期待通りに動いていたのですが、 しばらく使っていると、手元の環境では x = 53, y = 100 のときに a は 53 ではなく 52 になることに気づきました。 これは次の理由によります。 式の最初の (double)53 / 10

  • STL 馴染みのない単語

    tyru
    tyru 2009/04/09
    参照を使う時と使うべきでない時の例がある
  • Standard Template Library プログラミング on the Web

    1985年、AT&TのBjarne StroustrupがC++をこの世に送り出しました。その後C++は様々な拡張を繰り返しながら進化してきました。 1991年、ISOはC++の国際標準(standard C++)を定める作業を開始しました。標準C++の最終草案は1997年にISO C++標準化委員会に承認されました。 標準C++が規定するのは言語仕様だけなく、C++標準ライブラリも規格の中で明確に定められています。それまでC++のライブラリといえばiostreamぐらいのものでしたし、それもあくまで"事実上の標準"でしかありませんでした。 そしてそのC++標準ライブラリの一部として組み入れられたのがSTL(Standard Template Library)です。すなわちSTLは標準C++の仕様の一部ということです。 僕がSTLを知ったのは1995年、いくつかのコンパイラがtemplat

    tyru
    tyru 2009/04/09
  • STL の string のリファレンスカウント - bkブログ

    STL の string のリファレンスカウント Effective STLによると、多くの STL の実装では string クラスの内部において、文字列のコピーを減らすために、リファレンスカウントが行われているそうです。そこで、手元の環境の string クラスでリファレンスカウントが実際に行われているか調べてみました。 結論としては、Debian GNU/Linux sarge + GCC 3.3.5 の環境では、リファレンスカウントが行われていました。次のコードをコンパイルして実行すると 2つの string オブジェクトの data() は同じアドレスを指している (つまり、メモリ上の同じ文字列を共有している) ことがわかります。 #include <stdio.h> #include <string> using namespace std; int main() { stri

    tyru
    tyru 2009/04/09
  • Geekなぺーじ:C言語が嫌いな理由

    「Why I hate C」という記事がありました。 私は個人的にはC言語が好きですが、C言語が嫌だという視点も面白いので要約してみました。 かなり削っているので詳細は原文をご覧下さい。 C言語は組み込みに使うには良い言語ですが、その他の99.9%のアプリケーションを作るには最適とは言えません。 現在、アセンブラが一般的なアプリケーションを書くための良い解では無いことは自明です。 ここでは、もはやC言語もそうでは無い理由を述べたいと思います。 C言語の最も大きな問題はプログラマが間違いを犯しやすい事です。 私も良く間違えます。 どんなプログラマであっても数千行のコードを書いてバグが一つも無いということはありません。 コード量が少ないということは間違いの数も少ないということになります。 C言語は、言語のデザイン上、より多くのコードを書く事を要求します。 また、新しく開発されたプログラミング言

    tyru
    tyru 2009/04/08
  • 関数のアドレスと空ポインタの比較 | 移植性のあるCプログラミング

    一定期間更新がないため広告を表示しています

    関数のアドレスと空ポインタの比較 | 移植性のあるCプログラミング
    tyru
    tyru 2009/04/08
    volatile / 「標準Cでは、いかなる関数へのポインタも空ポインタと等しくならないことが、言語仕様上保証されて」い
  • Boost Libraries

    アルファベット順ライブラリリスト カテゴリ別ライブラリリスト 文字列とテキスト処理 コンテナ イテレータ アルゴリズム 関数オブジェクトとより高位のプログラミング ジェネリックプログラミング テンプレートメタプログラミング プリプロセッサメタプログラミング 並列プログラミング 数学と計算 正当性とテスト データ構造 入出力 言語間サポート メモリ 構文解析 その他 不完全なコンパイラの回避手段 どのライブラリがどのコンパイラで動くかを理解するには Compiler Status. ライブラリのダウンロード,ビルド,インストールについてはGetting Started. アルファベット順ライブラリリスト any - 異なる型のひとつの値を格納できる、安全で汎用的な入れ物。Kevlin Henney 作 array - STL に準拠した定数サイズの配列のラッパコンテナ。Nicolai Jos

    tyru
    tyru 2009/04/08
  • Boost C++ Libraries Document

    ライブラリ . ドキュメント: 最新のリリース CVS(毎日更新) . ライセンス . Getting Started . 退行テスト: 一般的な情報 テスト結果 メーリングリストと ニュースグループ . Boost (Developers) . Boost Users . Project-Specific . Announcements . Discussion Policy サポート . FAQ . Request Support . Report Bugs . Suggest Features . Commercial Support . Also: Mailing Lists About . Formal Reviews . Review Schedule . Requirements . Guidelines . Submissions Other Resources . Fil

    tyru
    tyru 2009/04/08
  • Boost Document Translation Project Home Page

    [ Japanese | English ] In this project, we are translating the document of Boost C++ Libraries into Japanese. If you are interested in this project, please join us!! For details, see also how to join. Boost C++ Libraries http://www.boost.org/ Project Home Page http://boost.cppll.jp/ Mailing List http://lists.sourceforge.jp/mailman/listinfo/boostjp-developer Workspace (Sourceforge.jp) http://source

    tyru
    tyru 2009/04/08
  • http://www.nces.is.nagoya-u.ac.jp/NEXCESS/blog/index.php?itemid=177

    tyru
    tyru 2009/04/06
    C++の参照の特徴 1.初期化(代入)しなければならない 2.参照するアドレスを変更できない 3.ヌル値を持つことがない
  • 【レポート】GCCに匹敵するコンパイラ?! LLVM - BSDCan2008 | エンタープライズ | マイコミジャーナル

    BSDCan2008、およびその直前に開催されたFreeBSD Developer Summitを通じて関係者がもっとも強い関心を持ったのは、もしかするとChris Lattner氏が担当したセッション「BSD licensed C++ compiler - LLVM and Clang: Next Generation Compiler Technology」だったかもしれない。同氏のセッションで初めてLLVM(Low Level Virtual Machine)について知ったという人も少なからずいたようだ。Lattner氏はLLVMのチーフアーキテクトであり、同技術を語るには適切な人物といえる。 モダンテクニックで開発されたマルチ言語コンパイラインフラ LLVMはモダンなテクニックで開発されたコンパイラインフラストラクチャだ。プログラミング言語に依存しないモダンなオプティマイザとコード

    tyru
    tyru 2009/04/06
  • C++ - boost::function はどのように可変長引数に対応しているのか

    「超汎用関数ポインタ」のコメントより boost::functionは難しくてギブアップ・・・ 可変長のオーバーロードをどうやって解決しているのか が知りたかったんだけど、 (以下略) C++ の真骨頂はプリプロセッサとテンプレートを駆使したメタプログラミングにある。メタプログラミングこそが、C++ を他言語の追随を許さない超言語に押し上げていると共に、比類なき難度を持った言語にしている。 boost::function も、そこそこにメタしている実装のひとつだ。 とりあえず、プリプロセスされていない状態では理解が難しいので、プリプロセスだけ実行する。そうすれば格段にソースコードは読み易くなる。Visual C++ なら「/E」「/PE」「/EP」コンパイラオプションを使うと、プリプロセスした結果が得られる。 以下は、boost::function をプリプロセスした結果の抜粋だ(実装は省

    tyru
    tyru 2009/04/02
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    tyru
    tyru 2009/04/02
  • https://amachang.hatenablog.com/entry/20090325/1237960531

    tyru
    tyru 2009/04/02
  • Boost C++ Libraries

    tyru
    tyru 2009/04/02
    boostの解説