タグ

CとC++に関するsatojkovicのブックマーク (9)

  • Cのコールバック関数をC++のメンバ関数にバインディングする方法 - kazuhoのメモ置き場

    たとえば libevent のような C 言語でかかれたイベント駆動型のライブラリを C++ から使っていると、C++ のメンバ関数をコールバックとしてセットできたらうれしいことが多いですよね。以下のようにすればできます。 たとえば、コールバック関数をセットする関数の型が、 void set_foo_callback(void (*)(void* cb_arg), void* cb_arg); なら、以下のようにクラスとメンバ関数を引数にとるテンプレート関数を定義し、 template <typename T, void (T::*FUNC)()> void to_foo_callback(void* cb_arg) { T* obj = reinterpret_cast<T*>(cb_arg); (obj->*FUNC)(); }以下のように受け渡せばいい。 class K { publ

    Cのコールバック関数をC++のメンバ関数にバインディングする方法 - kazuhoのメモ置き場
  • モダンな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++の開発環境の構築方法 - 考える人、コードを書く人
  • bwin·必赢(中国)唯一官方网站

  • 汎用ポインタ

    void型ポインタ ポインタについては、ここまで読み進んできた方ならすでに自身があると思います しかし、通常のポインタ型以外に特殊なポインタ型があります ポインタ型でのみ存在する特殊な型で汎用ポインタと呼ばれるものです 実は、型名はよく見なれていますがvoid *型なのです * が付いているのが異なる部分ですね void型は、しつこいようですがポインタ型でのみ使用できるものです 通常の変数にはvoid型は存在しません これはどのような型かというと、あらゆるポインタ型に変換できるポインタ型です 多くはどのような型も受け取れる関数を作成するのに使用されます 汎用ポインタを使用すれば、ポインタ型であればどのような型でも受け取ることができます void型のポインタを逆参照するには必ず型キャストします キャストはC言語では任意ですが、C++では必ず必要となります void型ポインタはどのデータ型にも

    satojkovic
    satojkovic 2010/03/11
    キャストはCでは任意、C++では必須
  • ITエンジニアの技術メモ C言語の関数呼び出し - extern "C"

    ■外部シンボル CやC++の関数名は、オブジェクトファイルの中では「シンボル名」で扱われます。 Cの場合「シンボル名」はほぼ関数名と同じになりますが、 C++では色々な変換が加えられ、関数名とは異なる名前になります。 例えば、int hoge(int a) という関数がある場合、 C言語 → _hoge C++言語 → __Z4hogei のようなシンボル名になります。 実際にどのようなシンボル名になるかは処理系に依存するのですが、 C++の場合はシンボル名に仮引数の数や型などで修飾される事がポイントです。 C++では何故このようにややこしい変換を行っているかというと オーバーロードや名前空間などの実現の為です。 ■C++からCの関数を呼び出す  C++から異なる翻訳単位のCの関数を呼び出す場合、  上記のシンボル名のつけ方の違いから、どの関数を呼び出しているかが  分からなくなる問題が発

    satojkovic
    satojkovic 2009/11/08
    extern "C"
  • サービス終了のお知らせ

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

    satojkovic
    satojkovic 2009/11/06
    C++とCではシンボル名が異なるのでextern "C"しないとリンクエラーになる
  • 並列アプリケーションを作ってみよう | OSDN Magazine

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

    並列アプリケーションを作ってみよう | OSDN Magazine
    satojkovic
    satojkovic 2009/06/08
    並列処理アプリケーションの実装方法。マルチスレッド、OpenMP、TBB、自動並列化。
  • emacs C++ 開発環境 link集 - niitsumaの日記

    emacsでc++開発を行うための情報を集めました。まとめをここでしています 以下それぞれのリンク Emacs で C 言語プログラミングを始める人へのイントロダクション 初心者向けdocment 以下の2項目が役立つ タグジャンプ ここで説明しているtagファイルの作成方法 $ find . -name "*.[chCH]" -print | etags - はubuntu7.10では動かなかった 関数名の補完入力がM-tabでできる タグジャンプはここで説明してるetagより後述のgtagの方が便利 Benjamin Rutt's Emacs C development tips (English) complieをする窓の大きさを小さめにする方法 インデントを自分好みにする方法 etagの使い方。Emacs で C 言語プログラミングを始める人へのイントロダクション よりも詳しく解説

    emacs C++ 開発環境 link集 - niitsumaの日記
  • C++ のコードを Flash Player で動かす! Alchemy を速攻試してみる。 - IT戦記

    はじめに Adobe から C/C++ で書いたコードを Flash や AIR で動かす Alchemy というものがリリースされましたね! Alchemy - Adobe Labs これはすごい!ということで、少し試してみたいと思います。 その様子をリアルタイムに書いていきます。ちゃんと出来るかな 環境 OS は Mac OS X で gcc 、 java は入っているものとします。 ホームディレクトリ(/Users/amachang)に AlchemyTest というディレクトリを作って作業します。 インストール まずは、いろいろインストールします。 Flash Player 10 Debugger Version Adobe Flash Player - Debug Downloads ここからダウンロードしてきて、普通にインストールします。 Flex SDK 以下から Flex

    C++ のコードを Flash Player で動かす! Alchemy を速攻試してみる。 - IT戦記
  • 1