タグ

C++に関するysibataのブックマーク (18)

  • Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!

    kazuhoさんがやってくれました。 ずいぶん前からjsonをC++でパース(SAXじゃなくてDOM)するのに小さいライブラリないかなーと思ってました。個人的にはjson-cというのを使ってたのですが、幾らか気に入らない所があったりビルドが少し手間だったりしていました。STLしか使わなくてvectorとかmapで表現されるツリー構造な物が欲しいなぁって思ってたんです。 とあるIRCで昨日、kazuhoさんと「ほしいですよねー」という話から始まって、githubにあるjsonxxとかも物色しながら「いいのないねー」とか言ってたらkazuhoさんが「もすこし綺麗に書けそう」って言い出して朝から格的に書き始めてついさっき出来上がりました。速いw 名前はpicojson とても小さく、実装コードだと300数十ステップ程です。しかもヘッダファイルだけなので管理が楽です。 試しにwassrのpubl

    Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!
  • C++11 - Wikipedia

    この記事は更新が必要とされています。 この記事には古い情報が掲載されています。編集の際に新しい情報を記事に反映させてください。反映後、このタグは除去してください。(2019年1月) C++11は、プログラミング言語 C++ のISO標準 ISO/IEC 14882:2011 の略称である。規格の策定中は2009年中の標準化を目指していたため、C++0x という仮称で呼ばれていた。 ISO/IEC 14882:2003 (C++03) に代わるものとして、2011年8月12日にISOによって承認された[4]。後継のC++14が2014年8月18日に承認されている。 コア言語への機能追加や標準C++ライブラリの拡張を施し、C++TR1ライブラリの大部分を(数学的特殊関数ライブラリを除いて)取り込んでいる。 C++ への修正はコア言語と標準ライブラリの双方に及ぶ。 委員会は、新規格の個別の要素の

  • コールバック関数とオブジェクト指向

    コールバック関数とオブジェクト指向 1. スレッドをC++クラスでラップしたい! ワーカースレッドを作る際には、MFCでは普通、AfxBeginThreadにスレッド制御関数へのポインタを渡してスレッドを開始させます。でも、スレッド制御関数に渡せるパラメータは32ビットのポインタ1つだけです。まあ、グローバル変数を使って情報をやり取りすればいいんだけど、それじゃあ、オブジェクト指向っぽくなくてかっこ悪いような気がするし、構造体の中に渡したいパラメータをまとめて、それへのポインタを渡すのもいいけど、もっとかっこいいやり方があります。 ワーカースレッドについて、必要なもの全てをまとめて、1つのクラスを作ってしまえばいいのです。でも、ここで1つ問題が出てきます。スレッド制御関数もクラスのメンバに加えたいのですが、メンバ関数をスレッド制御関数にすることはできないのです。これは、一般的に言えることで

  • C++ のプログラムのデバッグを楽にする方法

    Google が公開しているソフトウェアの解説シリーズ(→その1 , その2)の続きです。今回は google-glog を使ってスタックトレースを表示する方法についてご紹介します。 C++ でプログラムを書いているとよく遭遇するのがセグメンテーション違反というエラーです。不正なアドレスへのアクセスなどによりセグメンテーション違反が起きると、通常、 UNIX 系の OS では SIGSEGV というシグナルによってプログラムが終了するとともに、 core というファイルが作られます。 core ファイルにはデバッガから参照できるいろいろな情報が残っていますが、多くの場合に役に立つのは、スタックトレースという情報です。スタックトレースを見れば、プログラムがどこでクラッシュしたのか、どのような関数を経由してそこにたどり着いたのかがわかります。プログラムがクラッシュした箇所を特定できれば、単純な

    C++ のプログラムのデバッグを楽にする方法
  • __stdcallと__cdecl

    __stdcallは、WIN32 APIの呼び出し規約で、スタックの解放を呼ばれた側が行い(したがって、varargは使用不可)、__cdeclは、スタックの解放を呼ぶ側が行う(したがって、varargを使用可能)。 テストコード #include <stdio.h> int __stdcall scall(int a, int b) { printf("a=%d,b=%d\n", a, b); return a * b; } int __cdecl ccall(int a, int b) { printf("a=%d,b=%d\n", a, b); return a * b; } int main(int argc, char* argv[]) { scall(1, 2); ccall(1, 2); return 0; } アセンブラリスト __stdcall ?scall@@YGHHH

    ysibata
    ysibata 2009/04/08
  • 作ってみよう,MyガジェットPart4

    (株)アットマークテクノ 荘司靖 SHOJI Yasushi 森島史仁 MORISHIMA Fumito (この文書は技術評論社「Software Design」2005年12月号に掲載されたものです。) 最後に,これまで作ってきたシステムを組み合わせて,CD試聴機を完成させる手順を解説します.また後半では,より製品レベルのガジェットに近づけるためのさまざまなテクニックを解説します. はじめに 画像の描画,ユーザからのインプット(タッチパネル+バーコードリーダ),音楽の再生などそれぞれの機能が実現したので,これらを組み合わせてCD試聴システムを構築します(写真1). ●写真1 最近の組み込み開発 最近では組み込み機器にも,高機能と開発期間の短縮(Time to market)という相反するものが要求されていまので,まず機能が実現できるのかどうかをはっきりさせるための(proof of co

  • Internet Programming - TCPクライアントの作成手順(非同期型)

    ■非同期型APIを使ったTCPクライアント作成の流れ 非同期型APIを使ったTCPクライアントの簡単な流れは、 の4段階から成り立ちます。 同期型のAPIを使った場合との違いは、サーバに接続した時や、サーバからデータを受信したときなのどソケットイベントがウィンドウメッセージで通知されることです。 実際にプログラムで使うWinSockのAPI(Socket Interface)を使用してもう少し詳しくあらわすと、 WSAStartup関数でWinSockの初期化を行います。 (プログラムの開始時のみ) socket関数でソケットの作成を行います。 サーバのIPアドレスを取得します。もしinet_addr関数でIPアドレスの取得ができなかった場合は、WSAAsyncGetHostByName関数でサーバのIPアドレスの取得を行います。このときサーバの情報が取得できたらウィンドウメッセージとして

  • とりあえず始めるBoost - 何かを勉強すると更新されるWiki

    shared pointer † 参照数をカウントし、参照されなくなったら自動で解放してくれる賢いポインタ。 STLのauto_ptrの発展版 Boostといえば有名なのはこれかも? 必要なヘッダ #include <boost/shared_ptr.hpp> using namespace boost; ↑ ユニットテスト用ライブラリ † http://boost.cppll.jp/HEAD/libs/test/doc/index.htm cppunitの代わり。 ヘッダのインクルードでライブラリをリンクしなくてもよくなるので、 環境が違うとライブラリの名前が微妙に違ったりするのを回避できる。 もちろんリンクですますこともできるけど。 さらに、マクロが充実してるのでテスト用の関数をいちいちmain()とかで登録する必要がない。 そもそもmain()かかなくても、テスト用

  • endl および flush による出力ストリームのフラッシュ

    出力ストリームの内容を出力装置に書き込むためには、出力ストリームをフラッシュする必要があります。 次の例について考えてみます。 cout << "This first calculation may take a very long time¥n"; firstVeryLongCalc(); cout << "This second calculation may take even longer¥n"; secondVeryLongCalc(); cout << "All done!"; この例で呼び出された関数自体が、標準入出力ストリームに対する入力または出力を行わない場合、firstVeryLongCalc() が呼び出される前に、最初のメッセージが cout バッファーに書き込まれます。 secondVeryLongCalc() が呼び出される前に 2 番目のメッセージ

    ysibata
    ysibata 2009/03/01
  • はてなブログ | 無料ブログを作成しよう

    読書感想】論理的思考とは何か ☆☆☆☆ 論理的思考とは何か (岩波新書 新赤版 2036)作者:渡邉 雅子岩波書店Amazon Kindle版もあります。論理的思考とは何か (岩波新書)作者:渡邉 雅子岩波書店Amazon 論理的思考法は世界共通ではない。思考する目的をまず明確にしてその目的に合った思考法を選ぶ技術が要る。…

    はてなブログ | 無料ブログを作成しよう
  • はてなブログ | 無料ブログを作成しよう

    年間約50現場通うアイドルオタクが選ぶ2024年現場ベスト3! こちらのブログでは初めまして。アイドルオタクブロガーのあややと申します。普段は「それは恋とか愛とかの類ではなくて」(https://moarh.hatenablog.jp/)というブログを書いています。この度、アイドルオタク友人たちと4人で交換日記を始めることになりました! …

    はてなブログ | 無料ブログを作成しよう
  • C++, boost::thread : スレッドの生成と実行

    C/C++でスレッドを扱う場合は、プラットフォームによって使用するライブラリが違います。 Windows なら Windows API の thread で、 UNIX や Linux 系ならば pthread ライブラリ等を使用します。プラットフォーム依存するコードは可搬性に難があり、解決策の1つとしてプリコンパイルで依存部分をプラットフォームに合わせたライブラリを選択してコンパイルする方法があります。 boost ライブラリの boost::thread は、上のような処理をラップして共通のインターフェイスとして実装されています。 boost/thread.hppの一部 #if defined(BOOST_THREAD_PLATFORM_WIN32) #include <boost/thread/win32/thread.hpp> #elif defined(BOOST_THREAD_

    C++, boost::thread : スレッドの生成と実行
  • プログラミング言語C++ 第3版正誤表

    『プログラミング言語C++第3版』(アジソン・ウェスレイ・パブリッシャーズ・ジャパン, 1998年)の正誤表です。原著者にならい、「誤りと意味の明確化」、「入力ミス」に分類し、さらにそれらを原著の訂正と翻訳の訂正に分類します。原著の正誤表はこちらにあります。また、2000年に入ってからの新規追加分はこちらに日付順にまとめてあります。 原著者は、「誤りと意味の明確化」の部分には理解を損ねる可能性があること、「入力ミス」には綴り、文法の誤りを入れるとしていますが、「誤りと意味の明確化」の部分は誤りよりも、意味を明確にすべきところの方が多く、また多くの読者には影響を与えないとしています。原著の正誤表(の翻訳)の部分では、このことを考慮に入れてください。翻訳では、当然誤りに分類されるものが多くなると思います。 原著の正誤表のうち、「第7、8刷から第9刷へ」という部分までは、訳書に生かされています。

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    ysibata
    ysibata 2009/02/14
  • KENJI

    更新履歴 DNS拡張EDNS0の解析 Linuxカーネルをハッキングしてみよう Windowsシステムプログラミング Part 3 64ビット環境でのリバースエンジニアリング Windowsシステムプログラミング Part2 Windowsシステムプログラミング Part1 Contents インフォメーション 「TCP/IPの教科書」サポートページ 「アセンブリ言語の教科書」サポートページ 「ハッカー・プログラミング大全 攻撃編」サポートページ ブログ(はてな) BBS メール このサイトについて テキスト 暗号 詳解 RSA暗号化アルゴリズム 詳解 DES暗号化アルゴリズム crypt() アルゴリズム解析 MD5 メッセージダイジェストアルゴリズム crypt() アルゴリズム解析 (MD5バージョン) TCP/IP IP TCP UDP Header Format(IPv4) Ch

  • speex+portaudioを使ったechoアプリを書いてみた : maaash.jp

    Posted on 10月 18, 2008 Filed Under speex, portaudio | マイク → speexエンコーダ → speexデコーダ → スピーカー だけの。 speexエンコーダ、speexデコーダ無しだと問題ないところ、ありにすると、 なんか高音のノイズが入るのはなぜ? speex-devのMLに質問中。。。 コードはこんな

  • googletest - Google C++ Testing Framework - Google Project Hosting

    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

    googletest - Google C++ Testing Framework - Google Project Hosting
  • GitHub - google/googlemock: Google Mock

    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/googlemock: Google Mock
  • 1