Humanity

Edit the world by your favorite way

C/C++

Structural Equivalence

またはStructure Equivalenceとか言うんだろうか。 検索しても日本語の資料がひっかからない。 「"structural equivalence" OR "structural equivalence" byte offset」とかするとようやく英語のページがひっかかる。 この言葉を知ったのはid:dmakiさんの「P…

volatileのこんな使い道

ちょっと前のcomp.std.c++メーリングリストから。 One use of volatile, that was not listed in the paper referred to above is to prevent register allocation of particular variables. Some computers, most notably the Intel Pentium series, use hi…

それぞれのLL言語で「配列」とか「リスト」と呼ばれてるものって、 いわゆるC++での「vector」「list」「deque」のどれで実装されてるんだろう... C++ではコンテナが選べるってのはいいことだよね。

#ifndef lint char copyright[] = "..."; #endifについて

久しぶりにブログ確認したような気がする。 と思って見てみたらまだ3日しか経ってなかった。 この記事でhead.cとtail.cを見て、 #ifndef lint char copyright[] = "..."; #endif という行が気になったので検索してみると このページがひっかかったのでメモ。…

コピーコンストラクタについて

pimplイディオムというのがEffective C++で紹介されてたのでふとググってみた。 そんで検索結果の一番最初のサイトが検索結果の一番最初に出たので見てみたら、pimplイディオムとは違う所でいかに自分がC++の基本を理解していないか思い知らされた。 以下説…

C++でこんなことしたい

こんな風にエラー用のクラスを生成したいんだけどできない。 何か根本的に間違ってるような気がしないでもない。 自分としてはvectorとかから継承できるんだからこれでもできるだろーとか思ったのに・・・ namespace error { using namespace std; template <const char* errmsg></const>…

逆ポーランド記法計算機書いてみた

結構前からちょくちょくいじってて、 昨日はこればっかやってた。 というわけで貼りつけたいんだけど、 どうやらGistは1つのGistに複数ファイルがあると アルファベット順的に先頭のファイルしか貼りつけができないらしい。 これのために新しいGistを作るの…

テンプレート引数へ値を渡せると知って感動して涙出た

http://www.wakhok.ac.jp/~sumi/stl/template.html テンプレート引数には型だけでなく、値を渡すこともできます。 たとえば、 template<int I> class X { int* p; public: X() { p = new int[I]; } ~X() { delete[] p; } int& operator[](int i) { return p[i]; } }</int>…

アルゴリズムの勉強

今までアルゴリズムというものをほとんど勉強してこなかったのだけどもやっぱり重要だよね。というわけでメモ。 今回は「ある数までの全ての素数を求める」アルゴリズムについて考えてみる。 まずベンチマーク用にこんなコードを書く。 #include "prime.h" #…

bisonとflex

具体的なソースなしで分かったことだけをメモ。 まず処理の流れは flexが生成したもの → bisonが生成したもの → それぞれの単語(?)についての自前処理 ということ?と思ったら参考URLの一つにこんな文章が。 flex の主な使用方法の一つは、 yacc パーサジ…

gccでSDL

これを見てDirectXよりもOpenGLよりもSDLがやりたくなったので色々探したのだけれども何でないんだろう。 いやあるけど見つからないのか。 SDLの公式ページで最新版のSDL-devel-1.2.13-mingw32.tar.gzをとってくる。 解凍したら、includeとlibフォルダをgcc…

BCCでDLLとかLIBとか変換

OBJ,LIB,DLLからLIB,DEFファイルを作る tdump -oxCOMENT [OBJ,LIB,DLL] [LIB,DEF] ↓ impdef [DEF] [DLL] or implib [LIB] [DLL] -oxCOMENTはコメント情報を含めないって意味らしい。 COMMENTではないらしい(COMment ENTryって意味だろうか)。 tdumpの第2引…

signed, unsigned

文字やバイト列(バイナリ)を扱う時には必ずchar。 扱う数値の範囲が1byte以下でそれ以上の容量は必要ない時はunsinged char。 charは処理系によってsignedかunsingedか違う char, singed char, unsinged char はそれぞれ違う型として定義されている。(cha…