タグ

C++に関するz_vexのブックマーク (57)

  • MFCから.NETへの実践的移行計画(1/5) - @IT

    前編では、ネイティブ・コードとして記述したC/C++ライブラリをマネージ・コードであるC++/CLIでラップし(すなわち.NET化)、それをC#やVisual Basic(以下VB)などの.NET言語から呼び出す手順について解説しました。 この後を受けて、中編ではその応用としてVisual C++(以下VC++)による.NETアプリケーション構築の1つの戦術を紹介します。 ■C++/CLIによるWindowsフォーム・アプリケーション .NET FrameworkとVisual Studio-IDEの助けを借りて、VC++だけで.NETWindowsフォーム・アプリケーションを組み上げることはもちろん可能です。ですが筆者はVC++のみでのWindowsフォーム・アプリケーション構築には少なからず疑問を感じています。 それについて議論するために、まずはVisual Studio 2005(

  • ちょっとだけマイナーなSTLの話 - d.y.d.

    21:23 09/11/29 ドラクエ3 ドラゴンクエスト III モバイル版 が配信開始されたと聞いてはプレイせずにはいられない、ということで、さっきクリア。 内容は 「SFC版のベタ移植 - すごろく場 + AI戦闘」 ですね。 すごろく場が減った分、限定アイテムが他の場所に移動 (パワーベルト・ドラゴンテイル・ドラゴンローブ・グリンガムのムチが小さなメダル賞品に。 光のドレスがゾーマ城の宝箱に。雷神の剣も宝箱だった気がする。あと、小さなメダルの総数が110枚で変化無しらしいので、 すごろく場にあった分が通常マップに押し出されて、ところてん式に押された炎のブーメランもメダル賞品化)。 不思議なボレロと女神の指輪は見てない。なくなった? AIは、マヌーサ/ラリホー/マホトーン辺りを効く相手にだけ積極的に使ってくれるので参考になる&便利。 勇者もAI駆動にできるモードが欲しかった 細かいと

    z_vex
    z_vex 2009/11/13
  • 【C++/CLI】Vista到来。既存C/C 資産の.NET化を始めよう! - @IT

    ●Win32スタティック・ライブラリ(C++クラス)の準備 先ほどのhello関数と同様、簡単なネイティブ・クラスを考えます。ここでは「counter」という名前のソリューションとプロジェクトを作成し、counterクラスをC++で実装します(以下の開発手順は先ほどとほぼ同じなので詳細は省略します)。 #ifndef COUNTER_H__ #define COUNTER_H__ class counter { private: int value_; public: counter(); void increment(); int value() const; }; #endif

  • C++リファレンス - cppreference.com

    スマートポインタとアロケータ 日付と時間 関数オブジェクト  −  hash (C++11) 文字列変換 (C++17) ユーティリティ関数 pair  − tuple (C++11) optional (C++17)  −  any (C++17) variant (C++17)  −  format (C++20)

  • ひきぷろぐ - FC2 BLOG パスワード認証

    ブログ パスワード認証 閲覧するには管理人が設定した パスワードの入力が必要です。 管理人からのメッセージ 閲覧パスワード Copyright © since 1999 FC2 inc. All Rights Reserved.

    z_vex
    z_vex 2009/11/09
  • C/C++ から main 関数が消える日 - カタチづくり

    Windows上でデスクトップアプリを開発している身としては、そのうちC/C++でmain関数を書く人って一人もいなくなるんじゃね、と思っている。もちろん簡単なテストコードのためにはmain関数が書けるほうが便利だから全く無くなるわけじゃないんだけど、C/C++でmain関数書いて最終成果物としてリリースされる機会は、もう無くなる日は近い。 C/C++の優位性はパフォーマンスとか低位のAPIを直接叩けるとかしかない。その性能を活かすには要所要所でC/C++ネイティブコードをDLL化して呼び出せば十分で、アプリケーション全体をC/C++で書く必要は全くない。アプリ全体を構築する能力は圧倒的にC#/.NET Framewokのほうが優れている。つまりC/C++でmain関数を書く必要はなく、単にDLLとして関数をエクスポートできれば十分ってことだ。 これは純粋なC/C++の話じゃないけれど、た

    C/C++ から main 関数が消える日 - カタチづくり
    z_vex
    z_vex 2009/11/09
  • 並列プログラミングの効率的なデバッグを実現する「Parallel Inspector」

    #include <stdlib.h> #include <time.h> #include <limits.h> #include <iostream> #include <windows.h> #include <winnt.h> #include <tchar.h> #include <StrSafe.h> #include <process.h> using namespace std; int stockCount = 10; //在庫数 //商品の生産を行う関数 DWORD WINAPI Producer( PVOID pvParam ) { //増加数を読み出す int point = PtrToUlong(pvParam); //処理を行うために在庫数を読み出す //※DBかファイルから値を読み出していると仮定してください int tmp = stockCount; //商

    並列プログラミングの効率的なデバッグを実現する「Parallel Inspector」
    z_vex
    z_vex 2009/10/15
  • 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

  • プログラミングの禁じ手Web版 C言語編(InternetArchiveよりサルベージ) - Akio's Log

    はじめに 昔お世話になったC Magazineの「プログラミングの禁じ手Web版 C言語編」というサイトを、後輩に教えてあげようとしたら、C Magazineの休刊後にドメインが失効してしまったようで、見る事が出来ませんでした。 幸い、InternetArchive(http://www.archive.org/web/web.php) に当時のデータがほぼ残っていたので、無許可ではありますがサルベージして転載させてもらいました。 「C MAGAZINE - プログラミングの禁じ手Web版 C言語編」 元のアドレスはこちら。 http://www.cmagazine.jp/src/kinjite/c/index.html InternetArchive http://web.archive.org/web/20070113222026/http://www.cmagazine.jp/src

    プログラミングの禁じ手Web版 C言語編(InternetArchiveよりサルベージ) - Akio's Log
  • C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す
    z_vex
    z_vex 2009/09/10
  • オープンソース化された並列化テンプレートクラスライブラリ「Intel Threading Building Blocks」入門 | OSDN Magazine

    C++で並列アプリケーションを実装するためのテンプレートライブラリとして、インテルがリリースしている「Intel Threading Building Blocks」(TBB)がある。TBBはインテル コンパイラーやインテル Parallel Studioといったインテルのコンパイラ製品に付属しているほか、オープンソース版も公開されている。記事ではこのTBBの概要と、基的な使い方を解説する。 C/C++で並列アプリケーションを実装する手法として、並列化したい処理をOSのAPIを用いてマルチスレッド化する、もしくは並列プログラミングの規格である「OpenMP」を利用する、といったものが知られている。これらについては以前の記事でも紹介しているが、マルチスレッドを利用した実装は柔軟性がある一方で手間が掛かり、OpenMPは比較的手軽だが柔軟性に欠けるなど、それぞれに長所と短所がある。 また、

    オープンソース化された並列化テンプレートクラスライブラリ「Intel Threading Building Blocks」入門 | OSDN Magazine
  • C++におけるスマートポインタとシリアライズ~boostライブラリにパッチが採用されるまで~|オブジェクトの広場

    記事は、筆者がプログラミング言語C++を用いてソフトを開発している際に遭遇した問題と、その解決までをまとめたものです。 現在のC++プログラミングでは、多くの場面でBoostライブラリを利用します。今回筆者は、動的なオブジェクトのライフタイムを自動的に管理するためにboost::shared_ptrおよびboost::weak_ptrを、オブジェクトを保存・復元するために、boost::serializationのライブラリを利用しました。そこで予想外の問題に遭遇し、Boostにバグ報告し、解析を行い、最終的にパッチを送り、それが採用され、線にマージされることになりました。その過程で、普段利用しているだけでは意識することのない、Boostライブラリの実装の工夫を垣間見ることになりました。そのあたりの情報も交えながら、いったいどんな問題にぶつかり、どうやって解決したのかを紹介したいと思い

  • enum classをintに変換 - Faith and Brave - C++で遊ぼう

    C++0xで導入されるenum classは、C++03までのenumよりも型付けが 強くなっているのでint型への暗黙の型変換はできなくなっています。 enum class Color { Blue = 0, Yello, Red }; int color = Color::Red; // エラー!Colorからintへ変換できません 明示的な型変換ならいけるかな、と思ったのでenum classを実装しているGCC 4.4で試してみました。 int color = static_cast<int>(Color::Red); // OK : colorは2 明示的な型変換はできるみたいです。 intからenum classへの変換も、明示的な型変換をすればいけます。 void foo(Color color) {} foo(2); // エラー!第1引数をintからColorへ変換できま

    enum classをintに変換 - Faith and Brave - C++で遊ぼう
  • Douglas Gregor、フランクフルト会議について語る

    What Happened in Frankfurt? « C++Next これは全C++0xプログラマが読むべきだと思う。悲しい話だ。 フランクフルトで何があったのか? C++0xの発展に興味のある人は、もうニュースを聞いただろうと思う。ISO C++委員会は、2009年7月のフランクフルト会議で、C++0xのドラフトから、Conceptを外すことを、投票で決めた。Conceptは、C++0xの重要な機能で、その削除は、かなりショックを与えたことだろう。ここでは、私はConceptをC++0xに入れるにあたってなされた努力と、結果的に失敗した理由を、語ろうと思う。 Conceptの歴史 C++プログラマは、常に、もっとマシにtemplateを使いたいと考えていた。契約的(原語:constraints)なC++templateは、少なくとも、Bjarne StroustrupのThe D

  • UTF-8 の文字列を操作するための補助関数群 - Cube Lilac

    UTF-8 の文字列を操作するための補助関数群を作ってみました.当初,find() などの特定の文字列を見つける部分の実装が面倒そうだなぁと思っていたのですが,UTF-8 の 2 バイト目以降には 1 バイト目に出現しうる値は出現しないのですね. ビットパターンは以下のようになっている。 0xxxxxxx (00-7f) 7bit 110yyyyx 10xxxxxx (c0-df)(80-bf) 11bit 1110yyyy 10yxxxxx 10xxxxxx (e0-ef)(80-bf)(80-bf) 16bit 11110yyy 10yyxxxx 10xxxxxx 10xxxxxx (f0-f7)(80-bf)(80-bf)(80-bf) 21bit UTF-8 - Wikipedia そんな訳で find() などは std::string の find() をそのまま使えば良さそう

    UTF-8 の文字列を操作するための補助関数群 - Cube Lilac
  • Bjarne Stroustrup、Conceptと未来を語る

    センスとフィーリングで大胆な意訳を試みた。Danny Kalevがやたらとウザい奴に成り下がっていたり、Bjarne Stroustrupがコミカルなまでにジジイ臭いのは仕様。ただ、DKの言い回しは、ちょっとやり過ぎたかも知れない。実際原文を読んでいると、これぐらいムカつく言い回しなのだが。 Page 1: Concepts: Disappointment Without Defeat Danny Kalev 今回のconceptの失敗についてどう受け止めてますか。今回の事件をどう思いますか。これは、あるいは、将来的に新機能を提案する妨げになると思いますか。 Bjarne Stroustrup C++0xにconceptを入れないと決定したことについてかね。ワシとしては、conceptが失敗したとは思っておらんよ。今回の問題は、個人的にはユーザビリティの問題だと思っておるんだが、まあ、せい

  • Twitter の半径数クリック以内の情報収集 - IT戦記

    ちょっと 現実頭皮的に自己満足的プログラムを書きたくなったので Twitter のクローラーを書いてみた。 C++ にしては、割とすっきり書けて満足。 使ったライブラリ soci データベースライブラリ picojson json パーサー boost.asio ネットワークライブラリ boost.date_time 日付時刻ライブラリ ソース #include <cassert> #include <soci.h> #include <soci-sqlite3.h> #include <unistd.h> #include <iostream> #include <sstream> #include <picojson.h> #include <boost/scoped_ptr.hpp> #include <boost/asio.hpp> #include <boost/cast.hpp

    Twitter の半径数クリック以内の情報収集 - IT戦記
  • gccにおけるatomic操作命令の個別関数

     gccとVC x86/x64環境で開発する上で, gccとVCはどちらも非常に優れたC/C++コンパイラです. ただLinuxWindowsのどちらの環境でも動作するようなC/C++コードを書くためには, gccとVC, およびそれらが動作するOSの違いが問題になることがあります. ここではそれらの違いについてまとめていきたいと思います. なお説明を簡単にするためにマクロを多用していますが実際には可能なら別の手段をとるか, 名前がぶつからないような命名規則に則ったマクロ名をつけることをお薦めします. 対象 定義済みマクロ 有用なマクロ コンパイルオプション 演算子の代替表現の抑制 日語のコメント 型 pragma attributeとdeclspec ファイル入出力 テキストとバイナリ 巨大なファイル static変数の初期化 snprintf 例外ハンドラ intrinsic関数

    z_vex
    z_vex 2009/08/06
  • OpenGLを利用するリッチGUIライブラリ「Clutter 1.0.0」リリース | エンタープライズ | マイコミジャーナル

    Clutterプロジェクトは7月29日(現地時間)、オープンソースのGUIライブラリである「Clutter 1.0.0」をリリースした。ClutterプロジェクトはOpenGLをベースとしたリッチなGUI用ライブラリの開発を目指して発足し、現在は米Intelの支援を受けて進められている。このライブラリを利用することで、アニメーションに対応した高度なGUIを容易に構築できるようになるという。 ClutterのレンダリングはOpenGL/OpenGL ESを用いて行われるが、提供されるAPIによりレンダリングに関する細かな操作は完全に隠蔽されている。したがって開発者はOpenGLの複雑性を意識せずに高度なグラフィック機能を利用することができる。またPangoGStreamer、Cairoをはじめとする各種オープンソースライブラリを内蔵することで、高機能なUIの作成を容易にしている。Clutt

  • C++0xのマルチスレッド機能

    はじめに C++の新しい標準規格である「C++0x」の大きな新機能の1つが、マルチスレッド処理のサポートです。 従来のC++では、マルチスレッド機能は標準規格の拡張としてコンパイラごとに提供されていたため、細かな部分がコンパイラやプラットフォームによって異なっていました。しかしC++0xでは、すべてのコンパイラが同じメモリモデルに準拠し、同一のマルチスレッド機能を利用できることになります(ただし、従来同様の拡張をコンパイラが独自に提供することも可能です)。 開発者の立場からすると、マルチスレッドのコードを別のコンパイラやプラットフォームへ移植するときの手間を大きく省くことができます。複数のプラットフォーム向けの開発を行う場合でも、種々雑多なAPIや構文をいくつも頭に入れておく必要がありません。 新しいスレッドライブラリの中心を担うのは、実行スレッドを制御するstd::threadクラスです

    C++0xのマルチスレッド機能