Seasons.NET

ちょっとした技術ブログです

C++

C++の限界を超えて、「プログラミング魔導書」の予約開始のお知らせ

C++

id:faith_and_brave氏を筆頭にC++のエキスパートが 余すことなくそのテクニックと可能性を示した 「プログラミング魔導書」がついに予約開始です。予約はこちらから 『プログラミングの魔導書 〜Programmers' Grimoire〜Vol.1 「Construct the World, C++」 …

Boostビルド系ライブラリを使う時の注意点

boostには、ヘッダーだけincludeして使えるものと各プラットフォームで ビルドしないといけないものがあります。例えば「filesystem」です。 cmake版boost1.40をダウンロードしてきます。 ダウンロード後、展開し、以下のコマンドを実行します。 cmake -GXco…

#if 0ハックすごくね?すげーってw

C C++

#If 0ってC,C++では、#endifまで問答無用でコメントにしますが、 これを使ったハックがすごく便利。 元ネタ http://gpwiki.org/index.php/SDL:Tutorial:Using_SDL_net #if 0 #!/bin/sh gcc -o a a.c exit #endif int main( void ) { printf( "Hello\n"); ret…

仮想関数テーブルを出力するには?

C++

gccのオプションには、-fdump-class-hierarchyというオプションがあり 各クラスの階層構造と仮想関数テーブルのレイアウトの表現をファイルに ダンプします。ファイル名は、ソースファイル名に .class を追加して作成されます。 -options 形式が使用されるな…

Undecorating names to see why a function can't be found

C++

Undecorating names to see why a function can't be found 装飾されていない関数が見つからないエラー 元ネタ “The Old New Thing : Undecorating names to see why a function can't be found” http://blogs.msdn.com/oldnewthing/archive/2008/12/29/9255…

戻り値受け取り型templateクラス

C++

Win32とかMFCつかっていると戻り値でエラーが-1で定義されているものがあり、 そういうときは、 int ret = GetCurSel(); if( ret == (-1) ) { /* 失敗した */ } という鈍くさいコード書かないといけません。 なるべく読み手がわかるように書きたい!!という…

DialogBlocks4.27とwxWidgets2.8.9が出てマスタ

C++

Download DialogBlocks Downloads - wxWidgets 次の2.9は、相当変更点があるっぽいな http://svn.wxwidgets.org/svn/wx/wxWidgets/trunk/docs/changes.txt

ogglibのビルド方法

C++

http://www.xiph.org/downloads/ からliboggとlibvorbisを取ってくる liboggのwin32フォルダにある*dswを開いてそのままソリューションごとビルド そうすると、ogg_static_d.libとogg_d.dll(ogg_d.lib)が出来ます。 liboggのフォルダ名を「ogg」に変更して以…

*.lib,*.dllファイルから関数のシンボル情報を得る方法

C++

VisualStudioのツールで、dumpbin.exeというのがあります。 これは、指定した、*.dllや*libファイルからシンボル名やEXPORTされたシンボル情報を取得することができます。 特に、P/Invokeをしたいときは、シンボル名がわからないと出来ないので、 重宝すると…

いまさらライトブレーク入門(2)

参考:デバッガ内の式 ライトブレークにおいて、ある一定の値を超えたらブレークポイントを張りたいとか、 設定できるとデバッグも楽になります。 そんなときは、プログラムをF10でスタートさせ、メモリブレークポイントの設定で 以下のように条件を設定する…

C++0xにもいち早く対応したC++ Builderがリリース

C++

DelphiとC++Builderの最新版をリリース、エンバカデロ − @IT エンバカデロ・テクノロジーズ、Windows®向け開発ツールの次世代バージョン「Delphi® 2009」「C++Builder® 2009」を発表

boost1.36.0

C++

Version 1.36.0 でたっぽい。

C++BuilderでC++0xをサポート

C++

スニークピークビデオ - C++Builderでの新しい C++0x 標準のサポート id:faith_and_braveさんの所で知りました。 0xは、全然詳しくないけど、言語としての注目はしているのでとても期待です。

Visual Studio 2008に対応した「Intel Threading Building Blocks 2.1」

Visual Studio 2008に対応した「Intel Threading Building Blocks 2.1」 対応しましたか!!本読んだ感じでは面白そう。 いつか、使ってみたい!!

wxWidgets2.8.8とDialogBlocks

それぞれリリース Downloads - wxWidgets Download DialogBlocks

GoogleさんのProtocol Buffers

ProtocolBufferを使おう!!(1) ProtocolBufferを使おう!!(2)

XMLより20〜100倍はやい? Protocol Buffers

Protocol Buffers - Google Code なにやらGoogleさんがまたオープンソース化したので、試してみたいと思います。

SlickEdit Hotfix rev7 13.0.1

SlickEdit - Hot Fixes for SlickEdit® 2008 (v13.0.1) rev7出ました。

Modern C++ Design勉強日記 クラステンプレートの特殊化は、パターンマッチのようにつかえる

#include "stdafx.h" using namespace std; // Widget class Widget { }; // Widget2 class Widget2 { }; /*------------------------------------------------------------------------- */ /* (1) */ /*-------------------------------------------------…

Modern C++ Design勉強日記 似ているようで違う型

template< int T > struct Int2Type { enum { value = T }; }; #ifdef __TEST_TMP1_1 AUTO_TEST( tmp1_1 ) { Int2Type< true > t; Int2Type< false > f; // tとfは、別の型です。 // それぞの値を表示 cout << t.value << endl; cout << f.value << endl; //…

Coding Guidelines for Integral Constant Expressions

記事 テンプレート勉強するなら必須ですなぁ〜。

Modern C++ Design

Modern C++ Design勉強日記 テンプレートでポリシーを使おう!!(1) Modern C++ Design勉強日記 似ているようで違う型 Modern C++ Design勉強日記 クラステンプレートの特殊化は、パターンマッチのようにつかえる

Modern C++ Design勉強日記 テンプレートでポリシーを使おう!!(1)

動作、構造の専門を受け持つ(ポリシー)を用いることで、それを継承したホスト側を いつでも変更させることができるのがポリシーを使うメリット。 通常の継承では継承の種類が増える程、クラスを実装しなくてはいけないですが、 テンプレートを使えば、テン…

いまさらライトブレーク入門(1)

方法 : データ ブレークポイントを設定する (ネイティブのみ) メモリライトブレークを設定するには、デバッグ実行中に以下のブレークポイント ウィンドウでメモリブレーク設定をします。ポイントとしては、変数名に&をつけてあげることでそのアドレスが変更…

UIのオートテストしようぜ!!

UIをもったツールは、数多く作ってきましたが、 どうしてもテストは、自動化が難しく、簡単な操作ですら、 手動で毎回やってました・・・ これ結構回数が増えてくると骨が折れる作業で・・・ 何とか自動化したいと考えていたんですが以下の記事発見!! UIオ…

_In_,_Out_キーワードを使おう

C++

VisualStudioを使っているユーザーなら、 引数にIn,Out情報を付加しましょう。 引数が入力専用なら、_In_ 出力専用なら、_Out_ 入出力専用なら、_Inout_ これをつけて、もし宣言と定義が異なっていた場合、 コンパイラ側でエラーを出してくれるので便利です…

preインクリメントとpostインクリメントのコストの違い

C++

foreachを速くする方法はないかなぁ〜と調べていたんですが、 どうしてもvectorをiteratorで回したものより全然速くて、 実際には、 C2D 2.2GHz vector v(要素:30000); post++でイテレータを回した時:0.098 foreach:0.019こりゃかなわんな〜ってことで い…

BOOST_AUTO_TEST入門

BOOSTのユニットテストは、手軽で便利だけど、やはりsuiteを作って addしないといけないので、これが面倒。気軽さがない。でも、そんな人の為にAUTO_TESTというものがあります。 BOOST_AUTO_TEST_CASEを追加し、次々とテストを追加していけばOKです。 非常に…

BOOST_STATIC_CONSTANT

クラスにconstなメンバを持たせたい時ってありますよね。 そんなときは、BOOST_STATIC_CONSTANTを使うと以下のように書けます。 class Hoge { public: typedef bool Bool; BOOST_STATIC_CONSTANT( Bool , flag = false ); }; int _tmain(int argc, TCHAR* ar…

数値->文字列変換(stringstream)

C++

数値から文字列への変換は、stringstreamを使うと便利です。 #include <sstream> using namespace std; int _tmain(int argc, TCHAR* argv[]) { std::stringstream ss; int num = 10; ss << 10; cout << ss.str() << endl; //=> 10 ss << 10; cout << ss.str() << end</sstream>…