タグ

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

タグの絞り込みを解除

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

  • /*NOTREACHED */の効果を知らなかった件 - higepon blog

    がある。だから、コメントのかたちで /* NOTREACHED */ と書いてやると、コンパイラはこのコメントを認識し、このコメントには制御が移らないことを理解する。だからlongjmp 呼び出しをするユーザ関数の呼び出しの後には、このコメントを入れておくべきであるし、また、同様な戻らない関数 exec() などにもこれは有用なわけである。 noreturnな attributeとかなら知っていたけど、これは知らなかったな。 知らずに他のソースの真似して、それっぽく書いていたんだけど意味ねぇええ。 nobita% fxgm "cpp" "not reached" ./core/kernel/Mutex.cpp: /* not reached */ ./core/kernel/Mutex.cpp: /* not reached */ ./core/kernel/Mutex.cpp: /* n

    /*NOTREACHED */の効果を知らなかった件 - higepon blog
    tyru
    tyru 2009/06/13
  • C++0xの言語拡張まとめ(※随時更新) - Faith and Brave - C++で遊ぼう

    C++0xの概要はこちら ・Angle bracket テンプレートの連続した山カッコの問題の解決 ・初期化子リスト ユーザー定義のクラスで配列のような初期化構文を実装可能になる ・Uniform initialization コンストラクタの構文と初期化子リストの構文が一様になる ・デリゲーティング・コンストラクタ コンストラクタから他のコンストラクタを呼び出せる ・auto 型推論 ・記憶クラス指定子としての auto の削除 autoキーワードの意味が変更になるため、下位互換がなくなる ・decltype sizeofの型版 ・Template Aliases テンプレートを使用して型の別名を付けることができる。いわゆるtemplate typedef ・拡張sizeof 構造体/クラスのメンバをインスタンス化せずにsizeofすることが可能になる ・nullptr ヌルポインタを表

    C++0xの言語拡張まとめ(※随時更新) - Faith and Brave - C++で遊ぼう
  • pimplイディオムを語る — ありえるえりあ

    Recent entries 宣伝:C/C++のための開発補助ツール、GCCSenseをリリースしました matsuyama 2010-04-15 宣伝:Rubyのための開発補助ツール、RSenseをリリースしました matsuyama 2010-03-21 Emacsは死んだ matsuyama 2010-02-22 WebアプリケーションをiPhoneに対応させるための技術メモ matsuyama 2009-10-13 tokyo-emacs#x02の個人的レポート matsuyama 2009-09-07 Recent comments replica louis vuitton Anonymous User 2010-12-22 Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました Anonymous User 2010-12

    tyru
    tyru 2009/06/12
    pimplイディオãƒ
  • RAIIイディオムとPimplイディオム | 日々精進時々堕落

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

    RAIIイディオムとPimplイディオム | 日々精進時々堕落
    tyru
    tyru 2009/06/12
    C++のRAIIイディオムとPimplイディオãƒ
  • misagosan

    Twitter: @misagosan

    tyru
    tyru 2009/06/11
    templateとか
  • Boost サンプル集

    regex:正規表現を扱う(ラッパのgimite::reg_manager使用) #include <string> #include <iostream> #include <gimite/reg_manager.h> void main(){ gimite::reg_manager rm; std::string s= "<h1>Title</h1>Hello."; if (rm.search(s, "<h1>(.*?)</h1>")) // 検索 std::cout<<rm.str(1)<<std::endl; // 前方参照 rm.replace(s, "<h1>(.*?)</h1>", "<p>\\1</p>", "g"); // 置換 std::cout<<s<<std::endl; } 出力: Title <p>Title</p>Hello. ラッパなんぞ使わんわ!という方は

    tyru
    tyru 2009/06/10
    boostのサンプル集
  • いやなブログ: C のテンプレートでダックタイピング

    C++ のテンプレートでダックタイピング RubyPython などの動的な言語では、ダックタイピング (duck typing) というテクニックが多用されています。 ダックタイピングは、同じインタフェースさえ備えていれば型は何でも構わない、という考え方に基づく多態 (polymorphism) の手法です。アヒルのように見えて、アヒルのように鳴くなら、アヒルに違いない、というわけです。 そして、現在最も注目を浴びている言語である C++ でもテンプレートを用いるとダックタイピングを行えます。 ダックタイピングを使うと、継承関係を無視して多態的にオブジェクトのメソッドを呼び出せます。たとえば、次の Ruby のコードでは、func に Duck と Foo のどちらのオブジェクトを渡しても正常に動作します。これは Duck, Foo ともに、共通のインタフェースを持つ quack

    tyru
    tyru 2009/06/10
  • Technical Report 2(TR2) - Faith and Brave - C++で遊ぼう

    BoostからTR2に提案されているもの。 Boost.Optional(N1878) Boost.LexicalCast(N1973) Boost.Filesystem(N1975) Boost.Any(N1939) Boost.DynamicBitset(N2050) Boost.StringAlgorithm(N2059) Boost.Signals(N2086) Boost.Asio(N2175)

    Technical Report 2(TR2) - Faith and Brave - C++で遊ぼう
    tyru
    tyru 2009/06/09
    「BoostからTR2に提案されているもの」
  • 100行のCプログラムでWebチャットを実装する方法 - mixi engineer blog

    例の冷却ファンを修理してもらいに秋葉原に行ったのですが、最近の同人ゲームのクオリティはすごいなあと感心していたら、その二階はもっととんでもないことになってて、ひとつ大人になってしまったmikioです。今回は、Tokyo Cabinetのテンプレート直列化機能を駆使して、たった100行のCプログラムでWebチャットシステムを実装してみます。 古式ゆかしいWebチャットシステム 10年くらい前にCGIスクリプトでチャットシステムを作るのが流行していたのを覚えている方も多いと思います。チャットログは現在のようにデータベースサーバに転送して格納するのではなく、ローカルファイルシステム上のファイルにCSVやTSVなどのフォーマットで格納したり、同じくローカルのDBMファイルに格納するのが主流でした。2ちゃんねるの「datファイル」もそのようなデータファイルの一種と言えるでしょう。 その頃から、CGI

    100行のCプログラムでWebチャットを実装する方法 - mixi engineer blog
    tyru
    tyru 2009/06/09
  • 並列アプリケーションを作ってみよう | OSDN Magazine

    インテルのCoreシリーズCPUが登場して以来、マルチコアCPUは爆発的に普及している。現在では比較的低価格なCPUでも複数のコアを搭載するようになり、現在販売されているPCのほとんどはマルチコアに対応しているといっても過言ではない。しかし、まだマルチコアCPUの性能を生かす、並列処理を行っているアプリケーションは多くない。 並列処理は、一般には実装が難しい、という印象があるようだ。確かにスレッドを駆使して処理を並列化する場合、スレッドの管理やスレッド毎の連携など、考慮しなければならないことが増え面倒ではある。しかし、プログラムを並列化するための言語規格「OpenMP」や、C++用の並列化ライブラリ「Threading Building Blocks」といった並列化支援技術を利用することで、プログラムの並列化へのハードルは大幅に低くなる。また、インテルの開発製品「Parallel Stud

    並列アプリケーションを作ってみよう | OSDN Magazine
  • template

    演習で使った C++ のテンプレートに関する資料を中途半端ですが公開しときます。暇があってやる気が出たら追加や書き直しをするかも。 テンプレート一般 template の適当な説明 コンパイル時の計算 コンパイル時のコード生成 traits とは policy とは typename は何故必要か

    tyru
    tyru 2009/06/09
    templateについて
  • Geekなぺーじ : C++は中高生のセックスに似ている

    「Why C++ is like teenage sex」というネタがあるようです。 古さを多少感じますが結構笑えます。 色々な英語サイトで紹介されており、実際にどこがオリジナルなのかは発見できませんでした。 検索すると微妙に内容が異なる物もありますが、内容は以下のような感じです。 興味がある方は、「Why C++ is like teenage sex」という検索キーワードで検索してみて下さい。 C++は中高生のセックスに似ている。何故ならば。。。 みんな、そればっかり考えている みんな、その話ばかりしている みんな、他の人もやっていると考えている 実際にやっている奴はあまりいない やっている少数の人々は: 下手 次はもうちょっと上手になってるだろう 安全にやってるわけじゃない 成功体験を言いふらしてるけど、実際にやったことがある奴は少ない 原文 C++ is like teenage

    tyru
    tyru 2009/06/04
  • メタ関数::テンプレート・メタプログラミング

    2006-06-30 昨日予告したように、今回からテンプレート・メタプログラミングに関する話題を取り上げていきたいと思います。C++のテンプレートは、元々は型 T のコンテナを実装する程度の用途しか想定されていなかったのでしょうが、STLやBoost C++ Librariesなどを見ても分かるように、非常に広い用途に利用されています。 今回は、テンプレート・メタプログラミングの最も基礎にあたる「メタ関数」を取り上げてみたいと思います。(メタではない)普通の関数は、引数として値を受け取り、返却値として値を返します。そして、関数として定義された内容は、実行時に解決されます。 しかし、メタ関数では、引数として型または定数値を受け取り、返却値として型または定数値を返します。そして、メタ関数として定義された内容は、コンパイル時に静的に解決されます。もちろん、メタ関数の引数や返却値というのは、普通の

  • ソースブラウザとしてのDoxygen(どきしじぇん) - RC3の日記

    裏タグ[組込み][マイコン][V850] はじめに 前々からの懸案となっていたMicrOS(OSの癖に5000行とコンパクト)のソースコードリーディング。なんとなくやる気がおきない。それはなぜか?自己分析した結果、手持ちのエディタが秀丸だからという結論が出た。その詳細は省略して、"ソースコード 解析"とかで検索する。検索中に、ふと、リーマン時代に使ってたDoxygenを思い出す。Doxygenは、ソースコードに特殊コメントを埋め込んで、Doxygenをかまして、ドキュメントを生成するツール。そういえば、Doxygenはドキュメントだけでなく、ソースブラウザとして使えるじゃんと思い立つ。 インストール doxygen ダウンロード&インストール。 doxygen-1.5.5-setup.exe graphviz ダウンロード&インストール。 graphviz-2.16.1.exe Doxyg

    ソースブラウザとしてのDoxygen(どきしじぇん) - RC3の日記
  • メンバ変数の宣言順とコンストラクタ初期化子の順番が違うと怒られる - みねこあ

    仕事中、こんなビルド警告に遭遇しました。 class Foo { double d; int i; public: Foo( int i, double d ) :i(i), d(d){} }; int main( void ) { Foo foo( 1, 3.14 ); return 0; } このコード (test.cpp) を -Wall オプション付きでビルドするとこんな感じで怒られます。 C:\tmp\cpp>g++ test.cpp -Wall test.cpp: In constructor `Foo::Foo(int, double)': test.cpp:4: warning: `Foo::i' will be initialized after test.cpp:3: warning: `double Foo::d' test.cpp:7: warning: when

    メンバ変数の宣言順とコンストラクタ初期化子の順番が違うと怒られる - みねこあ
    tyru
    tyru 2009/06/03
    なるほど
  • 2004-10-27

    うん.なんていうかね.Boost.Serializationのutf8_codecvt_facet.hppとutf8_codecvt_facet.cppの実装を追ってたのよ.(RC枝から引っ張ってきたやつ)いやcoding変換の実装を追うのは楽しかったですよ?何せ実装が極めて素直だから,うにコード超初心者の自分でも教科書さえ手元にあれば「ああ,これはこれね」って感じだったもん. 問題はそこじゃねぇ. このユーティリティ,std::codecvtなる標準のクラスから派生してる.恐らくこのstd::codecvtはただのインターフェース定義.このstd::codecvtから派生したutf8_codecvt_facet_wchat_tをfacetとして突っ込んだlocaleオブジェクト作って(std::codecvtはlocale::facetから派生してる),それでstreamをimbueすれ

    2004-10-27
    tyru
    tyru 2009/06/03
    boostでも使われているワイド文字とそうでない文字の変換の仕組み
  • std::stringとstd::wstringの相互変換 - kryozahiro’s diary

    ポータブルで簡単な方法を探していたら、 http://ml.tietew.jp/cppll/cppll/article/4783 がよさそうだったけど、バグがあったのでいろいろ修正してみた。 #include <cstdlib> #include <string> //ワイド文字列からマルチバイト文字列 //ロケール依存 void narrow(const std::wstring &src, std::string &dest) { char *mbs = new char[src.length() * MB_CUR_MAX + 1]; wcstombs(mbs, src.c_str(), src.length() * MB_CUR_MAX + 1); dest = mbs; delete [] mbs; } //マルチバイト文字列からワイド文字列 //ロケール依存 void widen

    std::stringとstd::wstringの相互変換 - kryozahiro’s diary
    tyru
    tyru 2009/06/03
    「ロケール使うから環境依存なんだけど、どこでもコンパイルが通って、実用上どこでも使えて、かつ簡単な方
  • Doxygen

    ソースコード・ドキュメンテーション・ツール Doxygen は、C++、C、Java、Objective-C、Python、IDL (Corba、Microsoft 風)、Fortran、VHDL、PHP、C# 向けのドキュメンテーション・システムです。 D にもある程度対応しています。 Doxygen には、次の3つの利点があります。 文書化されたソースファイルのセットから、 オンライン・ドキュメント・ブラウザ (HTML形式) やオフラインのリファレンス・マニュアル (形式) を生成することができます。 RTF (MS-Word)、PostScript、ハイパーリンク PDF、圧縮 HTML、Unix man ページ形式の出力もサポートされています。ドキュメントは、ソースから直接抽出されます。これにより、ドキュメントとソースコードの一貫性を保つことがとても容易になります。 Doxyge

  • C++ way of strtol | Bytes

    tyru
    tyru 2009/06/03
    strtol()のC++風なやり方について。stringstream使うか嫌だったらやっぱstrtol()使えと。
  • http://ja.wikipedia.org/wiki/C%20%200x