flagflag  
7: 2012-02-18 (Sat) 21:30:04 s10037 source 8: 2012-02-19 (Sun) 02:50:09 s10037 source
Line 80: Line 80:
**アラインメント [#nc3a80e9] **アラインメント [#nc3a80e9]
***構造体に関して [#pfeed50a] ***構造体に関して [#pfeed50a]
-たとえば +たとえば~ 
-typedef struct Hoge+typedef struct Hoge~
{ {
   int int1;    int int1;
Line 89: Line 89:
}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]
Line 138: Line 138:
ifndef とは逆にifdefというのももある ifndef とは逆にifdefというのももある
ifndefとは逆で、ifdefは定義されていればendifまでを実行するらしい ifndefとは逆で、ifdefは定義されていればendifまでを実行するらしい
 +
 +
 +**bitを利用したフラグ管理 [#t8bfadcf]
 +***unsignedを使う [#n460c455]
 +
 +まず
 +#define aFlag (1)~
 +#define bFlag (1 << 2)~
 +#define cFlag (1 << 3)~
 +とフラグをどのように使うかマクロ定義や定数で定義しておくとよい~
 +unsigned Flag = 0;//フラグを記録させる変数~
 +必要な関数は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~
 +{~
 +}~


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

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

Members: 0
Guests: 42

more...

Access Counter

Today : 7280728072807280
Yesterday : 1361113611136111361113611
Total : 2364568723645687236456872364568723645687236456872364568723645687
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com