7: 2012-02-18 (土) 21:30:04 s10037 |
現: 2012-09-16 (日) 16:12:45 s10037 |
| 公式から落としてきたbulletのSDKを解凍すると、中にlibというフォルダがあるが中にライブラリファイルは入っていない。~ | | 公式から落としてきたbulletのSDKを解凍すると、中にlibというフォルダがあるが中にライブラリファイルは入っていない。~ |
| bullet-2.xx → msvc → 2008 (自分の場合) → lib → Debug~ | | bullet-2.xx → msvc → 2008 (自分の場合) → lib → Debug~ |
| + | となりにreleaseもあるんじゃね(たぶん)~ |
| + | あんまりいじってないから知らん~ |
| + | |
| を指定する~ | | を指定する~ |
| ~ | | ~ |
| **アラインメント [#nc3a80e9] | | **アラインメント [#nc3a80e9] |
| ***構造体に関して [#pfeed50a] | | ***構造体に関して [#pfeed50a] |
- | たとえば | + | たとえば~ |
- | typedef struct Hoge | + | typedef struct Hoge~ |
| { | | { |
| int int1; | | int int1; |
| }Hoge; | | }Hoge; |
| | | |
- | があったとして | + | があったとして~ |
- | サイズがいくつになるか | + | サイズがいくつになるか~ |
- | [obara@TandemMirror arainmento]$ ./a.out | + | [obara@TandemMirror arainmento]$ ./a.out ~ |
- | 24 | + | 24~ |
- | stHoge 0xbfde0e2c | + | stHoge 0xbfde0e2c ~ |
- | int1 0xbfde0e2c | + | int1 0xbfde0e2c ~ |
- | double1 0xbfde0e30 | + | double1 0xbfde0e30 ~ |
- | char1 0xbfde0e38 | + | char1 0xbfde0e38 ~ |
- | double2 0xbfde0e3c | + | double2 0xbfde0e3c ~ |
- | | + | ~ |
- | ってな感じになりchar1とdouble2の間に隙間が出来た | + | ってな感じになりchar1とdouble2の間に隙間が出来た~ |
- | これはコンパイラが勝手に境界調整(アラインメント)して適当に詰め物(パディングというらしい)を入れた | + | これはコンパイラが勝手に境界調整(アラインメント)して適当に詰め物(パディングというらしい)を入れた~ |
- | CPUによってパディングのやり方が違うらしい | + | CPUによってパディングのやり方が違うらしい~ |
- | | + | ~ |
- | パディングには下手に触ってはいけないらしい | + | パディングには下手に触ってはいけないらしい~ |
| | | |
| **malloc calloc realloc [#mae99393] | | **malloc calloc realloc [#mae99393] |
| ifndef とは逆にifdefというのももある | | ifndef とは逆にifdefというのももある |
| ifndefとは逆で、ifdefは定義されていればendifまでを実行するらしい | | ifndefとは逆で、ifdefは定義されていればendifまでを実行するらしい |
| + | |
| + | なにやらプリコンパイル時に必要のないコードはコンパイルしないようにしているようだから、ifdefとか書いても速度は変わらないらしい |
| + | |
| + | **bitを利用したフラグ管理 [#t8bfadcf] |
| + | ***unsignedを使う [#n460c455] |
| + | |
| + | まず |
| + | #define aFlag (1)~ |
| + | #define bFlag (1 << 2)~ |
| + | #define cFlag (1 << 3)~ |
| + | とフラグをどのように使うかマクロ定義や定数で定義しておくとよい~ |
| + | unsigned Flag = 0;//フラグを記録させる変数~ |
| + | unsignedを付けないと何かで右シフトした時、補数の1がシフトしてくるかもしれない~ |
| + | 必要な関数は3つ~ |
| + | セット、リセット、チェック~ |
| + | void set(unsigned f)~ |
| + | {~ |
| + | Flag |= f; |
| + | }~ |
| + | void reset(unsigned f)~ |
| + | {~ |
| + | Flag &= ~f; |
| + | }~ |
| + | //~はビット反転~ |
| + | int check(unsigned f)~ |
| + | {~ |
| + | return ((Flag & f) == f)? 1 : 0; |
| + | }~ |
| + | メモリの節約、可読性の向上~ |
| + | たとえば~ |
| + | if(check(aFlag|bFlag|cFlag))~ |
| + | {~ |
| + | }else~ |
| + | {~ |
| + | }~ |
| + | |
| + | **ポインタとconst [#b0e8c424] |
| + | ***構造体 [#oba918ac] |
| + | 構造体~ |
| + | typedef struct dororo{~ |
| + | int hoge; |
| + | int tara; |
| + | int pong; |
| + | }~ |
| + | があるとして、 |
| + | const dororo *a = (dororo*)malloc(sizeof(dororo) * i);~ |
| + | という宣言をしてもメンバに値を代入できる~ |
| + | dororoはポインタなのでconstがついていたら a=nanntyara みたいにポインタを変更することはできないが、a->hoge=100のような変更はおk |
| + | 当然ではあるがconstは修飾した変数そのものにだけ有効である |
| + | |
| + | ***javaの場合 [#vf68af87] |
| + | javaの場合も同様~ |
| + | final hoge[5][5] = { |
| + | {1,2,3,4,5}, |
| + | {1,2,3,4,5}, |
| + | {1,2,3,4,5}, |
| + | {1,2,3,4,5}, |
| + | {1,2,3,4,5} |
| + | }; |
| + | ~ |
| + | とあるとするとhogeは変更できないが、hoge[]とhoge[][]は弄る事ができる。~ |
| + | |
| + | **共用体 [#uf334ffe] |
| + | ***? [#aa9d6bfa] |
| + | よくわからん~ |
| + | メモリの節約はできそうだ |
| + | |
| + | |
| + | **Lua [#qe15a255] |
| + | ***今日からLuaなるスクリプトの勉学に励もうと思いました [#y00c7189] |
| + | LuaさんはC言語に組み込む目的でRoberto IerusalimschyさんとLuiz Henrique de FigueiredoさんとWaldemar CelesさんがC言語に組み込む事を目的としたスクリプトとして開発したっぽい~ |
| + | ガベージコレクションはインクリメンタルGCでライセンスはMITらしい |
| + | |
| + | **luaの使い方 [#a101002d] |
| + | visualstudioのプロパティ→構成プロパティ→c/c++→全般→追加のインクルードディレクトリでluaのなかのincludeの追加 |
| + | 全般→リンカーで追加のライブラリディレクトリへluaのlibをを追加 |
| + | リンカー→入力の追加の依存ファイルへlua5.1.libを追加する |
| + | |
| + | するとvisualstudioでc++にluaを使えるようになる |
| + | |
| + | **C++ [#oea30fce] |
| + | *** [#b573a9a8] |
| + | |
| + | **クソゲ [#e2abf5a4] |
| + | ***フレーム [#p024da0e] |
| + | 毎回呼ぶようなクラスにstaticなフレームを数えるunsignedを持たせておけばいいんじゃないか |
| + | getしてフレームを数える |
| + | |
| + | **MSVS [#yf7acc71] |
| + | ***デバッグモード [#tc98a4c6] |
| + | _DEBUGが定義される |
| + | ifndefで囲っておけば、debugビルド時のみの処理を書ける |