2007-05-01から1ヶ月間の記事一覧
コンパイラの最適化機能は、マルチスレッドプログラミングとかだと、不具合を起こす可能性があります。 mValue = 1; while(mValue){ ... //この中でmValueを変えるようなことはしない } 例えば、コンパイラは、しばしば上記のようなコードを、最適化によって…
まず、agglegate typesっていうのは、構造体(class)や、共用体や、配列で、以下のような条件を満たすもの。 コンストラクタがない ノンパブリックなメンバ変数がない 基底クラスがない 仮想関数がない このようなタイプに対しては、コンマで区切られたリスト…
constへのポインタに対してdelete演算ができるということを、最近知りました。 だから、以下のようなこともできてしまいます。 struct Hoge{ }; int main(){ const Hoge* p_hoge = new Hoge; delete p_hoge; return 0; } だから、どーしたってことはないんで…
なんとかnewを、場所に応じて使い分けることができんものかと、試行錯誤をしてみたのですが、どうにもうまくいかない。 #include <iostream> namespace WKPN1{ void* operator new(size_t size) throw() { using namespace std; cout << "wkpn1" << size << endl; retu</iostream>…
自宅サーバーのFTPソフトは、TinyFTPを使わせていただいていたのですが、どうにも調子が悪く、2、3個ファイルをUPするたびに、フリーズしてしまっていました。 そこで、別の、WarFtpdというソフトをインストールすることにしました。設定は以下のサイトを…
たぶん、こんな感じ //非同期呼び出し var ajax = new Ajax.Request("hoge.cgi", { method: "GET", onSucess: successFunc, onFailure: failureFunc } ); function successFunc(xmlhttp) { //cgi処理終了後、その出力を outputSccess IDを埋め込んだところに…
Happy Hacking英語配列版 → Happy Hacking日本語配列版 と移行しました。しかし、なぜか日本語キーボードとして認識してくれない! ドライバがよくないっぽいのですが、よくわからじ。 ネットで情報を探していたら、下記の記事を発見。 http://q.hatena.ne.j…
union Uni{ int x; char* c; }; があったとき、 Uni u[] = { 1, 2, 3 }; はできるが、 Uni u[] = { "a", "b", "c", "d" }; はコンパイルエラーとなる。つまり、宣言に最初に書いた方が優先されるということらしいです。
どうやら、これはUAC(たぶん、user account control)という仕組みが動いているかららしい。 「コントロールパネル」→「ユーザーアカウント」→「ユーザーアカウント制御の有効化または無効化」を選び、「UACを使ってコンピュータの保護に役立たせる」のチェッ…
なんか動かんなー。困ったなー。っと思っていたんですが、普通にexeをたたくのではなく、右クリックから「管理者として実行」を選んだら、動き出してくれました。 Vista、めんどくさ! スタートアップに入れたいときは、どうすんのやろ?調査中。
union MyVec{ struct { int x, y, z; }; int v[3]; }; 構造体名を定義しないのがミソ。 定義した瞬間コンパイルエラーになってまいます。 こやつを使うと、 MyVec vec; vec.x = 0; vec.v[0] = 0; というように、2種類の方法でアクセスできます。
もっと言うと、resoure_00,resoure_01といった名前を作る方法。 snprintf(name, sizeof(name), "resource_%02d", i); などとすればOK。%02dがポイント
いつもダウンロードさせていただいているKaoriyaさんでは、Vim7.1が出るのは、まだ先のようです。 7.0になってから、重たい感じがするので、処理が、もうちょっと軽快になっているといいな。
配列も全部ハッシュ。 んだから、極端な話、以下のようなこともできる。 arr = new Array(3); arr[0] = "0番だよ" arr[1] = "1番だよ" arr[2] = "2番だよ" //ここまではわかるけんど、 //以下もおk arr[3] = "3番だよ" なんもかんもハッシュなんで、javascr…
コンパイラベンダー依存だと思うのだけど、 一般にC標準のrand関数の生成する乱数の下位bitの質は低いらしい。例えば、偶数と奇数が交互に出たりしちゃうらしい。なんで、以下のようなコードは御法度 rand() % N いろいろ調べると、書くなら、こう↓ (int)((…
#include "stdio.h" #include "string.h" class Parent{ public: Parent(){ strcpy(name, "parent"); } virtual ~Parent(){} char name[256]; void hoge(int i){ printf("in parent hoge\n"); printf(" name: %s\n", name); } }; class Child : public Paren…
環境変数HOMEを作り、好きな作業フォルダを指定。
オーバーライドされる関数の返り値が、あるクラスのポインタ、もしくは参照であるとき、オーバーライドする関数の返り値の型は、派生クラスのポインタ、もしくは派生クラスの参照でもOKです。 つまり、以下のようなことができるということです。 struct RetB…
public継承 public -> public protected -> protected protected継承 public -> protected protected -> protected private継承 public -> private protected -> private っとなります。 また、継承元がprivateであれば、継承先ではアクセスできません。
const Vec2 &getPos() const; const Vec2 &getPos(); は、別物として扱われます。ただし、 const Vec2 &getPos(); Vec2 &getPos(); これらは、同一とみなされ、一緒に書くとコンパイルエラーとなります。 これはコンパイラが、引数では関数を区別するけど、…
const Pos& getPos() {return mPos;} これだけだと、次のような場合に困るconst GameObj& obj = mObjMgr.getObj(); const Pos& pos = obj.getPos(); //コンパイルエラーこーいうときは、以下のような関数も作るとOK。const Pos& getPos() const {return mPos…
特に違いはない。どう使い分けるかは、個人の自由。 歴史的には、たしか最初にclassができて、その後、紛らわしいからtypenameができたという話が『C++の設計と進化』に書いてあった気がする。『Modern C++ Design』では、intのようなプリミティブな型になる…
sizeコマンドを使うsize 実行ファイル名 でOK text:プログラムが置かれた領域 data:初期化されたデータの置かれた領域 bss -> block started by symbol:初期化してない変数達の領域
コンストラクタが完了するまでは仮想関数の解決は基底クラスに従って行われます。 なので、呼ばないようにしましょう。解決策としては、initialize()関数を作って、そのなかで、仮想関数を呼ぶようにします。 オブジェクトを構築直後にinitialize()を呼び出…
newすると、アロケーターがメモリブロックを確保する。 ヒープを開放するときは、そのブロックごとに削除する。 newや、deleteすると、メモリブロックを検索しないとだめなので、newやdeleteは、結構時間がかかったりする。しばしば、クラスのサイズを小さく…
class Hoge{ public: static int x; }; int Hoge::x = 10; class Piyo : public Hoge{ public: }; int main(){ printf("%p \n", &(Hoge::x)); printf("%p \n", &(Piyo::x)); } このコードにおいて、Hoge::xとPiyo::xは、まったく同じもの。
dynamic_castが適用されるのは、少なくとも一つのメンバ関数が仮想関数なクラスです。
Run-Time Type Identification の略。 いっつも、なんの略だか忘れてしまう。 c⌒っ*゚д゚)っφ メモメモ...
人生初のサーバー構築というのをやってみてます。 trac月っていうのを使って、ApacheとかTracとかSubversionとかを一括インストール。 しかし、起動しようとすると、以下のようなエラーが…。Critical error:wait for JVM process failed.さらに、 Unable to …
void hoge(int hoge_mask){ u32 mask = 1; int max = 10; for (int i = 0; i < max; i++, mask <<= 1) { if ((hoge_mask & mask) != 0) { //ここに、マスクを通ったものだけが行う処理を書く } } }