Chinaunix
标题:
有关pack的测试
[打印本页]
作者:
liuake
时间:
2006-12-11 15:36
标题:
有关pack的测试
/********************************
** Filename: pack.h
*********************************
#pragma pack(1)
//#pragma pack(push, 2)
#pragma pack(2)
#pragma pack(2)
#pragma pack(2)
#pragma pack(2)
#include
/* here should be 2 */
typedef struct
{
short i;
char a;
int j;
char b;
} packs_a;
#pragma pack(1)
/* here should be 4 */
typedef struct
{
short i;
char a;
int j;
char b;
} packs_b;
/*********************************
** Filename: pack.c
***********************************
#include "pack.h"
int main(void)
{
printf("size a = %d\n", sizeof(packs_a));
printf("size b = %d\n", sizeof(packs_b));
return 0;
}
测试结论:pack(n)实际上已经包含pack(push,n)的功能。pack()实际上是恢复默认pack size. pack stack最上层是上一次使用的pack.
建议: 规范使用pack,避免因为pack(n)引起的pack问题。
头文件中,不要直接使用pack(n),而用文件开头的pack(push,n)与文件结尾的pack(pop)取代。保证了不对其它文件产生影响。
本文来自ChinaUnix博客,如果查看原文请点:
http://blog.chinaunix.net/u/28158/showart_213409.html
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2