2012年5月1日 星期二

桶後越嶺

台9北宜往宜蘭,轉台9甲往小烏來方向,經小烏來老街到孝義派出所辨理入山手續(身分證件),至入山檢查哨(需事先至林務局申請車輛通行證,步行及自行車不受限),車行至登山口仍須30分鐘。由此開始出發,沿途風光明媚,林相與水源因位處翡翠水庫集水保護區,十分原始且乾淨。步行往返至鞍部約時4小時,步行容易,適合1日踏青。

2012年4月16日 星期一

紫微天后宮--行修宮(三峽紫微聖母環山步道)

這次來點輕鬆的,來回不到2小時。回程特地去看看紫微森林

2012年4月3日 星期二

word alignment(pragma pack) --- 影響struct size的因素

struct syskeyd2
{
int a;
int b;
int c;
int d;
};
/*因為預設是32 bits定址,所以char c;佔4bytes, char d;也佔4bytes*/
struct syskeyd1
{
int a;
char c;
int b;
char d;
int e;
};
/*如果我把char c;跟char d;放在一起,那這c跟d就會一起進到4bytes裡,
結果sizeof(struct syskeyd1)會是16 bytes*/


/*以下做完pack()後, struct就會以1個個bytes去計算size跟參數定位*/
#if defined(_MSC_VER)

#define HANDLE_PRAGMA_PACK_PUSH_POP //WIN32 style pack
#elif defined(__BORLANDC__)
#define HANDLE_PRAGMA_PACK_PUSH_POP //WIN32 style pack
#else
#endif
#ifdef HANDLE_PRAGMA_PACK_PUSH_POP
#pragma pack(push,1)
#else
#pragma pack(1)
#endif
struct syskeyd3
{
int a;
char c;
int b;
char d;
int e;
};
#ifdef HANDLE_PRAGMA_PACK_PUSH_POP
#pragma pack(pop)
#else
#pragma pack()
#endif
/*****************************************************************************/
/* NAME : main() */
/*****************************************************************************/
main(int argc, char *argv[])
{
printf("syskeyd2[%d] syskeyd1[%d] syskeyd3[%d] \n",sizeof(struct syskeyd2), sizeof(struct syskeyd1),sizeof(struct syskeyd3));
return 0;
}


執行結果:
syskeyd2[16] syskeyd1[20] syskeyd3[14]

文章分類