メディア関係者向けお問い合わせ先 メールでのお問い合わせ: pr-jp@google.com メディア関係者以外からのお問い合わせにはお答えいたしかねます。 その他すべてのお問い合わせにつきましては、ヘルプセンターをご覧ください。
![C++ のプログラムのデバッグを楽にする方法](https://cdn-ak-scissors.b.st-hatena.com/image/square/344988ebe8c10ce169549d8d7d0d0862cd8c4b1d/height=288;version=1;width=512/https%3A%2F%2F2.bp.blogspot.com%2F-7bZ5EziliZQ%2FVynIS9F7OAI%2FAAAAAAAASQ0%2FBJFntXCAntstZe6hQuo5KTrhi5Dyz9yHgCK4B%2Fs1600%2Fgooglelogo_color_200x200.png)
メディア関係者向けお問い合わせ先 メールでのお問い合わせ: pr-jp@google.com メディア関係者以外からのお問い合わせにはお答えいたしかねます。 その他すべてのお問い合わせにつきましては、ヘルプセンターをご覧ください。
とりあえず動くプログラムを書く ここでは例として、Fooという構造体の2次元配列を、引数で指定された幅と高さで作る、createFooMatrixという関数を作ってみます。 なお、配列の各要素を、initializeFoo関数で初期化しています。 Foo **createFooMatrix ( int width, int height ) { Foo **ptr = NULL; int w, h; ptr = (Foo **)malloc(height * sizeof(Foo *)); for (h = 0 ; h < height ; h++) { ptr[h] = (Foo *)malloc(width * sizeof(Foo)); for (w = 0 ; w < width ; w++) { initializeFoo(&ptr[h][w]); } } return ptr;
はじめに 「Bjarne Stroustrup氏との対話」連載を担当することになりました、豊田孝と申します。よろしくお願いいたします。 対話の相手であるBjarne Stroustrup氏は、プログラミング言語「C++」を設計し、最初に実装した人です。それだけでなく、同氏はC++を国際標準プログラミング言語の地位に付かせました。大変なエネルギーの持ち主です。 筆者はこの数年、「同氏の生き方から何かを学べるのではないか」と考えてきました。その考えは日毎に熱を帯び、「学べるはずだ!」、そしてついには、「わが国の開発者に、同氏の考え方と生き方ぜひお伝えしたい!」へと変化し今回の連載を始めるに至りました。 本稿でのStroustrup氏との対話はメール交換を通して行われます。基本的には、筆者が質問文を用意し、Stroustrup氏がその質問に対して高所からコメントを寄せることになります。C++言語
はじめに 「Bjarne Stroustrup氏との対話」連載を担当することになりました、豊田孝と申します。よろしくお願いいたします。 対話の相手であるBjarne Stroustrup氏は、プログラミング言語「C++」を設計し、最初に実装した人です。それだけでなく、同氏はC++を国際標準プログラミング言語の地位に付かせました。大変なエネルギーの持ち主です。 筆者はこの数年、「同氏の生き方から何かを学べるのではないか」と考えてきました。その考えは日毎に熱を帯び、「学べるはずだ!」、そしてついには、「わが国の開発者に、同氏の考え方と生き方ぜひお伝えしたい!」へと変化し今回の連載を始めるに至りました。 本稿でのStroustrup氏との対話はメール交換を通して行われます。基本的には、筆者が質問文を用意し、Stroustrup氏がその質問に対して高所からコメントを寄せることになります。C++言語
So you have invested man-years of effort in your C++ D3D graphics/visualization/game engine. Now you want to build a nice GUI that utilizes this engine, such as a scene editor or modeler, but low and behold you are inundated by potential hosting solutions: MFC, wxWidgets, QT, Winforms, WPF. All with different challenges and subtleties. Back in the day I solved this problem with MFC. Microsoft has
(from steps to phantasien) もう C++ なんて好きでもないし使いもしない理由。 http://www.hyuki.com/yukiwiki/wiki.cgi?WhyINoLongerLikeOrUseCPlusPlus 世の中やはり同じ境遇に陥っているひとはいるのですね. 何が起きたのか? 嫌気が差したんだ。C++ のどの面をとっても、その設計は性能と引き換えに私の生産性をうばった。もう一つうんざりなのは, リンカのエラー診断だ。ただライブラリをダウンロードして使うなんてことが決してできない。新しいライブラリを使うのに、自分でソースからビルドしないといけない。C++ にはコンパイル済コードをさっと使うための ABI がないからだ。コンパイラがアップグレードするたびに、私はアプリケーションとライブラリ全体を再コンパイルして、その中でいつも不可解なエラーを診断して
今日は地味な実装ばかりで書くことないので、id:Cryolite:20060606 さんのところの条件変数(condition variable)について書いておきます。 条件変数とは 条件変数は、一つあるいは複数のオブジェクトの状態が特定の条件を満たすまで、スレッドを待機させるための仕組みです。 名前から連想される機能と違い、条件変数オブジェクト自身には「条件」に該当する変数は含まれません。「条件」が満たされたタイミングで通知を行うための同期オブジェクトに過ぎません。 (そもそも条件変数という名前が混乱の元だと思います。) 使い方 Boost.Threadを使った例です。 boost::mutex m; boost::condition c; bool v = false; void thread_a() { // 5秒スリープ boost::xtime xt; boost::xtime
boost::serializationを使う はじめに コンパイル 簡単な使い方 クラスのバージョン付け 読み込みと書き込みで別の動作を行う 「非侵入型」のシリアル化関数 基底クラスをシリアル化する 配列をシリアライズする constメンバはどうするか ポインタからのシリアライズ:その1 ポインタからのシリアライズ:その2 基底クラスへのポインタから復元する 実装レベル オブジェクトの追跡 抽象クラスでのエラー NVP ロケールの設定 はじめに boost C++ Libraries(以下単にboost)という非常に便利なライブラリがあります。 次期C++標準にこのライブラリのうちのいくつかが採用されるらしいという話もあり、 C++開発者にとっては無視して通れないライブラリです。 そんなboostの中に、serializationというライブラリがあります。 一言で言ってしまえば、「クラ
フリーで利用できる開発環境、ライブラリ等のC/C++言語を利用したアプリケーション開発に関する情報です。 MinGWやEclipse + CDT、Visual C++ 2005 Express Edition等の情報を記載しています。 フリーコンパイラ(Windows) GCC - MinGW MinGWはGNUプロジェクトより公開されているフリーのコンパイラシステム(GCC)をWin32プラットフォーム用に移植 されたものです。 MinGWを使ってみる(1) (2) MinGWのインストールとgccでのコンパイル。MSYSのインストールとMSYSからgccの利用等を記載しました。 MinGW - Home MinGWのホームページ。MinGWは本サイトのダウンロードページ よりダウンロードできます。 また、本ページから入手可能なPOSIX 及びBourneシェル環境であるMSYSを利用す
[ Home on 246net ] C++で開発 好むと好まざるとに関わらず、C++言語を使った開発をすることになったときに調べたことの蓄積。 言語仕様 ブートストラップ main関数 main関数について パッケージ管理 名前空間 名前空間の使用 ヘッダファイル ヘッダファイルとは インクルードガード ヘッダファイルの依存性をなくすには 文法要素 プリプロセッサ 条件コンパイル 可変引数を取る関数(stdargs他) 定義済みマクロ 型 組み込み型 標準定義型(標準typedef等) ビットサイズ固定整数型、 typedefの注意 クラス コンストラクタ メンバー変数 演算子関数 ビットフィールド 継承 例外 標準例外 例外処理のプログラミング テンプレート メンバ関数の特殊化 デバッグ アサーション ANSI Cのassert VC++固有のassert コーディング標準 公知のコー
オブジェクトとクラスの関係について、次のような説明を見かけました(文言の引用ではなくて、檜山による要約)。 オブジェクトとクラスは全体としてツリー構造をしていて、ツリーの末端をオブジェクト、末端以外のノードをクラスという。末端であるオブジェクトは、その親ノードであるクラスのインスタンスと呼び、クラスどおしの親子関係を継承関係と呼ぶ。 うーむ、この説明、ある意味「簡潔でわかりやすい」とも言えるのだけど、ちょっと単純化し過ぎでしょ。 オブジェクトやクラスの概念て、そんなに美しくもなきゃ、整合的でもありません。実用性やら実装上の都合やらでゴチャゴチャですがね。しかし、そのゴチャゴチャが悪いともいえません。ゴチャゴチャを無理に単純化することなく、必然性を持った(幾分は偶発的だけど(苦笑))複雑さとして理解すべきかと思います。 というわけで、メタクラスやレイフィケーション(reification)な
5分ぐらい考え込んでハマってしまったのでメモっとく。 boost::threadのコンストラクタには引数として関数ポインタを指定してその関数でスレッドを作成するということができるんですが、関数へのポインタ以外の引数は指定できないから、そのスレッドに引数を与えてスレッド起動ということができません。 …。えええーっ!! いやいや、そんなけしからんことがあってたまるか。_beginthreadexだってpthread_createだって引数付きでスレッド起動できるしさぁ。まぁこいつらだってポインタとして引数1個だけど。 で、どうすればいいかって話なんですが、boost::threadのコンストラクタの関数ポインタは、関数ポインタというのは不正確で関数オブジェクトを引数にとるというのが正確なところ。関数ポインタをわたしてもOKなのはたぶん暗黙の型変換とかなんかでしょ、きっと(調べろよ)。 ってなわ
このページについて Hits! このページには、xyzzy lispとかC++についてのコンテンツがあります。 このページの無断転載は固くお断りいたします。 コンテンツ xyzzy lisps 私の作った、xyzzy用のlisp。 C++ ワイド文字列の罠 ワイド文字列について、私が陥った罠。 boost::serializationの使い方 オブジェクトのシリアル化を行うライブラリ。 boost::multi_index_containerの使い方 一つのコンテナを複数のインターフェースからアクセスできます。 boostの小道具いろいろ boostの中でも、とても小さなライブラリの紹介。 boostライブラリのビルドの仕方@VC+STLport boostライブラリをVCとSTLportを使用してビルドする方法。 小数の計算精度の奇妙な現象 ちょっとした不思議現象。 Forgotten
インストーラやパッケージを使う方法 一番簡単な方法です。コマンド一発でインストール完了です。 ただし、下記以外の開発環境や、最新バージョンリリース直後などは、 パッケージ化が追いついていないことがあります。 その場合手動での Boost のダウンロードやビルド、設定が必要になります。 → 手動インストール Visual C++ の場合 Visual C++ 7.1~10.0 用のインストーラが boostpro で公開されています。 ビルド済みライブラリが自動インストールできます。 Cygwin gcc の場合 CygwinのインストーラでBoostを一緒にインストールできます。 「Devel」カテゴリの「boost」と「boost-dev」を選択してください。 UNIX系環境の場合 大抵のディストリビューションでパッケージ化されているようです。 yum install boost boo
C++ ラビリンス C++ は、数多くの謎、咒文、罠、そして宝箱が仕掛けられた、壮大な迷宮である。 その C++ 迷宮をさまよう同志たちへ、ささやかながら、いくつかの道標を お贈りしたい。 もちろん、私自身、C++ 迷宮の一彷徨者に過ぎない。誤りや不備な点があれば、 遠慮なく指摘していただきたい。 キャスト (2001-03-01) dereference (2001-03-01) マルチスレッドにおける singleton (2001-03-17) 契約による設計 (2001-03-25) 戻値とコンストラクタの妖しい関係 (2001-04-09) マルチスレッドにおける singleton (その2) (2001-04-10) 自己言及的なテンプレート (2001-06-13) オーバーロードは継承できない (2001-06-16) GCC 3.0 のインストール (2001-07-0
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く