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

19 user(s) are online (3 user(s) are browsing xpwiki)

Members: 0
Guests: 19

more...

Access Counter

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