flagflag  
1: 2010-09-30 (Thu) 11:30:25 s10037 source Cur: 2012-09-16 (Sun) 16:12:45 s10037 source
Line 1: Line 1:
TITLE:C言語 TITLE:C言語
-*ああああ [#f04659ea+*C言語_オバラのwiki [#f02ac1c7
-いいいい +勘違いや間違い、キティーガイ沙汰な事を書いている可能性(大) 
-**うううう [#x3207220+ 
-ええええ +**hoge [#j87ede54] 
-***おおおお [#m1521625+***ほげほげ [#y7d03d0b
-かかかかか + 
-ききき+**環境変数の設定 [#y3c0d239] 
-くくく+***windows7の場合 [#c19612b4
 +マイコンコンピュータ右クリックからシステムの詳細設定~ 
 +詳細設定の下に環境変数(N)...がある
 +そこで設定~ 
 + 
 + 
 +**DXライブラリの設定 [#o1e8a6c6] 
 +***Visual studio 2008の場合 [#q9c740aa] 
 + 
 + 
 + 
 +「文字セット」の項目を「マルチ バイト文字セットを使用する」に変更を「すべての構成」に適応させる~ 
 +
 + 
 +「構成」~ 
 +
 +Release~ 
 +構成プロパティ → C/C++ → 「コード生成」~ 
 +のランタイム ライブラリの項目を「マルチスレッド(/MT)」に変更~ 
 +
 +Debug~ 
 + 
 +ランタイムライブラリの項目を「マルチスレッド デバッグ(/MTd)」に変更~ 
 + 
 + 
 + 
 +**予約語 [#h0341d94] 
 + 
 + 
 +***予約語 [#u5fb9dce] 
 +void     型の無いことを宣言~ 
 +char     1バイト・文字型~ 
 +short     2バイト・単精度整数型~ 
 +int      4バイト・整数型~ 
 +long      4バイト・整数型~ 
 +float     4バイト・単精度浮動小数点型~ 
 +double    8バイト・倍精度浮動小数点型~ 
 +auto     自動変数、関数を抜けるとデータは消去~ 
 +static    静的変数、関数を抜けてもデータが残る~ 
 +const    書き換え不可、宣言時に格納~ 
 +signed    符号付変数を指定~ 
 +unsigned   符号なし変数を指定~ 
 +extern    異なるファイルから使用する際に宣言~ 
 +volatile   コンパイラに最適化させない~ 
 +register   レジスタに割り当て高速化、C++では使用できるが意味が無い~ 
 +return    関数から抜ける、戻り値を指定できる~ 
 +goto    指定ラベルへジャンプ~ 
 +if      条件分岐~ 
 +else     if文の条件分岐~ 
 +switch   条件分岐~ 
 +case    switchでの条件分岐~ 
 +default   switchでのcaseに当てはまらない条件~ 
 +break    ブロックから抜ける~ 
 +for     ループ文(初期化;終了条件;変数更新)~ 
 +while    ループ文(終了条件)~ 
 +do     do-while文で使用する、処理の開始~ 
 +continue  ループ文の先頭に戻る~ 
 +typedef   型に別名をつける、意味は変わらず~ 
 +struct    構造体、変数をまとめて宣言するユーザー定義型~ 
 +enum    列挙型、整数の割り当て~ 
 +union    共用体、変数をまとめて宣言できるが、アドレスは共通~ 
 +sizeof   変数のサイズを取得~ 
 + 
 +**bullet [#i7eea11d] 
 +***bulletの導入 [#t3b20aa6] 
 +公式から落としてきたbulletのSDKを解凍すると、中にlibというフォルダがあるが中にライブラリファイルは入っていない。~ 
 +bullet-2.xx → msvc → 2008 (自分の場合) → lib → Debug~ 
 +となりにreleaseもあるんじゃね(たぶん)~ 
 +あんまりいじってないから知らん~ 
 + 
 +を指定する~ 
 +
 +ヘッダーファイルはbullet-2.xx → srcに入っている~ 
 + 
 +**アラインメント [#nc3a80e9] 
 +***構造体に関して [#pfeed50a] 
 +たとえば~ 
 +typedef struct Hoge~ 
 +
 +   int int1; 
 +   double double1; 
 +   char char1; 
 +   double double2; 
 +}Hoge; 
 + 
 +があったとして~ 
 +サイズがいくつになるか~ 
 +[obara@TandemMirror arainmento]$ ./a.out ~ 
 +24~ 
 +stHoge  0xbfde0e2c ~ 
 +int1      0xbfde0e2c ~ 
 +double1  0xbfde0e30 ~ 
 +char1    0xbfde0e38 ~ 
 +double2  0xbfde0e3c ~ 
 +
 +ってな感じになりchar1とdouble2の間に隙間が出来た~ 
 +これはコンパイラが勝手に境界調整(アラインメント)して適当に詰め物(パディングというらしい)を入れた~ 
 +CPUによってパディングのやり方が違うらしい~ 
 +
 +パディングには下手に触ってはいけないらしい~ 
 + 
 +**malloc calloc realloc [#mae99393] 
 +***malloc [#o77c9597] 
 +voidのポインタ返ってくる 
 +いじょ 
 +***calloc [#g4e06f23] 
 +voidのポインタが返ってくる 
 +んで中のビットが全部0になっているらしい 
 +いじょ 
 +***realloc [#ycfe0152] 
 +void realloc(変更したいポインタ,どんくらいヒープするかのサイズ) 
 +あんまり頻繁に使わない方がよさげ 
 + 
 +頻繁に巨大な領域をreallocで伸ばすと時間もかかりヒープの中につかえない巨大な空き領域がどんどんできてしまうらしい 
 + 
 +***フラグメンテーション [#c0558cda] 
 +てきとーにメモリの確保、開放を繰り返すとメモリが分断されていき使用できない細かい空きブロックができる 
 +この現象をフラグメンテーションというらしい 
 + 
 +(メモリはいっぱいあるぜ 気にするこたぁねぇw) 
 + 
 +**インクルード!ガーーーードッ!! [#ueddc470] 
 +***再定義防止、無駄なプリコンパイルを減らす [#qad655c3] 
 +ヘッダーに 
 +#ifndef OBARA_H 
 +#define OBARA_H 
 + 
 +~~ 
 + 
 +#endif 
 +と最初と最後に書いて置くだけで再定義防止、とビルド時間を短縮できる 
 + 
 +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)~ 
 +{~ 
 +   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ビルド時のみの処理を書ける


Front page   New List of Pages Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)

Site Search

Login

Username:

Password:


Lost Password?
Register now!!

Sub Menu

mini Calendar

Last MonthMay 2024Next Month
Su Mo Tu We Th Fr Sa
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
Today

Who's Online

37 user(s) are online (2 user(s) are browsing xpwiki)

Members: 0
Guests: 37

more...

Access Counter

Today : 4087408740874087
Yesterday : 5790579057905790
Total : 2365688323656883236568832365688323656883236568832365688323656883
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com