宏的几种特殊用法:1. 屏蔽“未使用参数”警告,2. 指定字节对齐,3. 可变参数宏,4. #,##,#@的区别...
分类:
其他好文 时间:
2014-07-01 16:01:40
阅读次数:
215
在定义了一个新的Struct后。
系统会按照一定的规则将新生命的类型变量进行字节对齐,如下结构体:
typedef struct Test{
int a;
char b[6];
}Test;
该结构体类型可能会被对齐为12个字节。
那么,在内存流和文件流操作中可能会出现这样的用法:
fwrite(strPtr,1,sizeof(Test)*len,fp);
事实上,被写入了len...
分类:
编程语言 时间:
2014-06-29 23:36:49
阅读次数:
388
2. 字节对齐的基本规则首先,每种类型的变量的默认对齐长度都是自己的变量长度,比如:char占一个字节,那么对齐长度就是一个字节,int占四个字节,对齐长度就是四个字节,double占八个字节,对齐长度就是8。int的对齐长度为4的实际意义是,int变量必须存储在四的倍数的地址上。 那么对于stru...
分类:
编程语言 时间:
2014-06-28 17:02:49
阅读次数:
265
自己留一个mark,以后提醒用。
1)机械硬盘状态下利用alien sprawn创建的系统恢复U盘,无法在SSD下使用,因为SSD中没有recovery分区,只能使用随机携带的系统恢复光盘;
2)最好在SSD安装系统之前,先用机械硬盘引导,在windows下使用diskgenious进行格式化分区,4k字节对齐;
3)将SSD安装在硬盘盘位1,因为是最经常使用,并在bios中设置SA...
分类:
其他好文 时间:
2014-06-25 10:02:55
阅读次数:
242
虽然内存对齐是老话题,但还是时常犯错,几下个例子,谨记: 1 void func10() 2 { 3 //要牢记,默认按4字节对齐,其他就很容易想了=============================== 4 union u_my 5 { 6 int n...
分类:
其他好文 时间:
2014-06-21 17:33:45
阅读次数:
198
网络协议里面,很可能遇到自定义的封包,对应到c里面的是typedef struct
_PackageHeader{ int headerLen; int timeStamp; short cmd
};为了保证单字节对齐,可以加上编译选项#pragma pack(1)可惜的是,go...
分类:
其他好文 时间:
2014-06-11 11:56:08
阅读次数:
273
1、b。结构体中的位域对齐。前两个int型变量的位域之和小于4字节,因此存放在一个int型变量之中,但是第三个是double型的变量,需要8字节对齐,这样前三个变量占了16个字节,最后一个int是四个字节,总共20个字节。根据结构体定义的原则,应该是最长变量的整数倍对齐,因此应该..
分类:
其他好文 时间:
2014-06-10 22:23:24
阅读次数:
273
staticvoid TEACore(unsignedint in[2], unsignedint
out[2], unsignedint key[4], long rounds){unsigned int y = in[0], z =
in[1];unsigned int limit = 0, s...
分类:
移动开发 时间:
2014-06-07 22:56:46
阅读次数:
396
关于C++字节对齐问题关于C/C++的字节对齐这两天写解析SWF文件的程序,在结构体指针和从文件里读出来的进行转换的时候遇到一些问题,就是有一个struct
A,比如:struct A{ char flag; int length; int id; ....};然后一个飘逸的...
分类:
编程语言 时间:
2014-06-02 21:23:39
阅读次数:
260
Erlang的模式匹配用来处理二进制数据可谓是得心应手。不仅直观,而且超乎想象的简单。在C++中,处理二进制数据首先要管理缓冲区。然后再按字节进行操作,如果要处理的数据不是按字节对齐,则需要进行位移等操作。操作过程复杂又难懂,如果再没有注释,那对于维护这段代码的人来说简直就是噩梦。例如:操作一串.....
分类:
其他好文 时间:
2014-05-30 00:10:42
阅读次数:
521