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