flagflag  If you want to see English page, please click "English" Button at Left.
5: 2010-11-14 (日) 13:04:42 s10037 ソース 現: 2012-09-16 (日) 16:12:45 s10037 ソース
Line 3: Line 3:
勘違いや間違い、キティーガイ沙汰な事を書いている可能性(大) 勘違いや間違い、キティーガイ沙汰な事を書いている可能性(大)
 +**hoge [#j87ede54]
 +***ほげほげ [#y7d03d0b]
**環境変数の設定 [#y3c0d239] **環境変数の設定 [#y3c0d239]
Line 72: Line 74:
公式から落としてきたbulletのSDKを解凍すると、中にlibというフォルダがあるが中にライブラリファイルは入っていない。~ 公式から落としてきたbulletのSDKを解凍すると、中にlibというフォルダがあるが中にライブラリファイルは入っていない。~
bullet-2.xx → msvc → 2008 (自分の場合) → lib → Debug~ bullet-2.xx → msvc → 2008 (自分の場合) → lib → Debug~
 +となりにreleaseもあるんじゃね(たぶん)~
 +あんまりいじってないから知らん~
 +
を指定する~ を指定する~
~ ~
ヘッダーファイルはbullet-2.xx → srcに入っている~ ヘッダーファイルはbullet-2.xx → srcに入っている~
-**win32API [#xd9a6814+**アラインメント [#nc3a80e9
-***ウィンドウ生成 [#t07e989f+***構造体に関して [#pfeed50a
-#include<windows.h>~ +たとえば~ 
-LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);~ +typedef struct Hoge~ 
-ATOM InitApp(HINSTANCE);~ +
-BOOL InitInstance(HINSTANCE, int);~+    int int1; 
 +   double double1
 +   char char1
 +   double double2
 +}Hoge;
-LPCTSTR lpszClassName = TEXT("win01.cpp");~+があったとして~ 
 +サイズがいくつになるか~ 
 +[obara@TandemMirror arainmento]$ ./a.out ~ 
 +24~ 
 +stHoge  0xbfde0e2c ~ 
 +int1      0xbfde0e2c ~ 
 +double1  0xbfde0e30 ~ 
 +char1    0xbfde0e38 ~ 
 +double2  0xbfde0e3c ~ 
 +
 +ってな感じになりchar1とdouble2の間に隙間が出来た~ 
 +これはコンパイラが勝手に境界調整(アラインメント)して適当に詰め物(パディングというらしい)を入れた~ 
 +CPUによってパディングのやり方が違うらしい~ 
 +
 +パディングには下手に触ってはいけないらしい~
-int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,LPSTR lpsCmdLine, int nCmdShow)~+**malloc calloc realloc [#mae99393] 
 +***malloc [#o77c9597] 
 +voidのポインタ返ってくる 
 +いじょ 
 +***calloc [#g4e06f23] 
 +voidのポインタが返ってくる 
 +んで中のビットが全部0になっているらしい 
 +いじょ 
 +***realloc [#ycfe0152] 
 +void realloc(変更したいポインタ,どんくらいヒープするかのサイズ) 
 +あんまり頻繁に使わない方がよさげ
-{~ +頻繁に巨大な領域をreallocで伸ばすと時間もかかりヒープの中につかえない巨大な空き領域がどんどんできてしまうらしい
-    MSG msg;~ +
-    BOOL bRet;~+
-    if(!InitApp(hCurInst))~ +***フラグメンテーション [#c0558cda] 
-     return FALSE;~ +てきとーにメモリの確保、開放を繰り返すとメモリが分断されていき使用できない細かい空きブロックができる 
-    if(!InitInstance(hCurInst, nCmdShow))~ +この現象をフラグメンテーションというらしい 
-     return FALSE;+ 
-    while ((bRet = GetMessage(&msg, NULL, 0,0)) != 0)~ +(メモリはいっぱいあるぜ 気にするこたぁねぇw) 
-    {+ 
-     if (bRet == -1)~ +**インクルード!ガーーーードッ!! [#ueddc470] 
-     {+***再定義防止、無駄なプリコンパイルを減らす [#qad655c3] 
-     break;+ヘッダーに 
-    ; }+#ifndef OBARA_H 
-     else+#define OBARA_H 
-     {+ 
-     TranslateMessage(&msg);+~
-     DispatchMessage(&msg);+ 
-     }+#endif 
-  ;  }~ +と最初と最後に書いて置くだけで再定義防止、とビルド時間を短縮できる 
-    return (int)msg.wParam;~+ 
 +ifndef とは逆にifdefというのももある 
 +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)~
-ATOM InitApp(HINSTANCE hInst)~+
{~ {~
-    WNDCLASSEX wc;~ +    Flag &= ~f;
-    wc.cbSize = sizeof(WNDCLASSEX);~ +
- ;   wc.style = CS_HREDRAW | CS_VREDRAW;~ +
-    wc.lpfnWndProc = WndProc;~ +
-    wc.cbClsExtra = 0;~ +
-    wc.cbWndExtra = 0;~ +
-    wc.hInstance = hInst;~ +
-    wc.hIcon = (HICON)LoadImage(NULL, MAKEINTRESOURCE(IDI_APPLICATION), +
-     IMAGE_ICON, 0,0, LR_DEFAULTSIZE | LR_SHARED);~ +
-    wc.hCursor = (HCURSOR)LoadImage(NULL, MAKEINTRESOURCE(IDC_ARROW), +
-    IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE | LR_SHARED);~ +
-    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);~ +
-    wc.lpszMenuName = NULL;~ +
-    wc.lpszClassName = lpszClassName;~ +
-    wc.hIconSm = (HICON)LoadImage(~ +
-     NULL,MAKEINTRESOURCE(IDI_APPLICATION), IMAGE_ICON, +
-     0, 0, LR_DEFAULTSIZE | LR_SHARED);~ +
- +
-    return (RegisterClassEx(&wc));~+
}~ }~
-//ウインドウの生成+//~はビット反転
-BOOL InitInstance(HINSTANCE hInst, int nCmdShow)~+int check(unsigned f)~
{~ {~
-    HWND hWnd;~ +    return ((Flag & f) == f)? 1 : 0;
- +
-    hWnd = CreateWindow(lpszClassName,~ +
-     TEXT("クソゲー"),~ +
-     WS_OVERLAPPEDWINDOW,~ +
-     CW_USEDEFAULT,~ +
-     CW_USEDEFAULT,~ +
-     CW_USEDEFAULT,~ +
-     CW_USEDEFAULT,~ +
-     NULL,~ +
-     NULL,~ +
-     hInst,~ +
-     NULL);~ +
-    if(!hWnd)+
-     return FALSE;~ +
-    ShowWindow(hWnd, nCmdShow);~ +
-    UpdateWindow(hWnd);~ +
-    return TRUE;~+
}~ }~
- +メモリの節約、可読性の向上~ 
-//ウインドウプロシージャ+たとえば
-LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)~+if(check(aFlag|bFlag|cFlag))~ 
 +{~ 
 +}else~
{~ {~
-    switch (msg)~ 
-    {~ 
-    case WM_DESTROY:~ 
-     PostQuitMessage(0);~ 
-     break;~ 
-    default:~ 
-     return(DefWindowProc(hWnd, msg, wp, lp));~ 
-    }~ 
-    return 0;~ 
}~ }~
 +
 +**ポインタと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ビルド時のみの処理を書ける


トップ   新規 ページ一覧 単語検索 最終更新   ヘルプ   最終更新のRSS 1.0 最終更新のRSS 2.0 最終更新のRSS Atom

サイト内 検索

ログイン

ユーザー名:

パスワード:


パスワード紛失
新規登録

サブ メニュー

ミニカレンダー

前月2024年 5月翌月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
<今日>

オンライン状況

66 人のユーザが現在オンラインです。 (16 人のユーザが xpwiki を参照しています。)

登録ユーザ: 0
ゲスト: 66

もっと...

アクセスカウンタ

今日 : 4964496449644964
昨日 : 1412914129141291412914129
総計 : 2345057423450574234505742345057423450574234505742345057423450574
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com