摘要: __attribute__是GNU C提供的一种机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。 __attribute__书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__参数。 __... 阅读全文
posted @ 2012-01-14 15:42 dzqabc 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 众所周知,程序为了提高访问效率,编译器在编译的时候,进行字节对齐。程序员也可以字节指定对齐方式。 Win32下的为progma指令,具体来说 #pragma pack(push) //保存原对齐状态#pragma pack(4)//设定为4字节对齐struct test{ int a;};#pragma pack(pop)//恢复对齐状态在linux下,gcc是默认的编译器。g++ 支持pro... 阅读全文
posted @ 2012-01-14 15:23 dzqabc 阅读(1386) 评论(0) 推荐(0) 编辑
摘要: 编译器对结构在编译过程中会优化对齐,由于编译器的内存对齐,当一个char变量独立存在时,会分配一个int大小的空间,当两个char连续存在时,会给两个char分配一个int大小的空间. class CMemoryTest { int a; char b; int c; char d; }; class CMemoryTest1 { int a;... 阅读全文
posted @ 2012-01-14 15:02 dzqabc 阅读(3545) 评论(0) 推荐(0) 编辑
摘要: BOOL 定义 typedef int BOOL; #define FALSE 0 #define TRUE 1 不能完全重载(BOOL的本质就是int),如: //file.h void f(int ); // ok void f(BOOL); // ok // file.cpp void f(int) {/*….*/} // ok void f(BOOL) {/*….*/} // 错误,重新声明bool(false,true)是C++内置的类型,可以避免上述的问题。bool在C++里是占用1字节,而BOOL是int类型,int类型的大小是视具体环境而定的;所以来说:false/true只占 阅读全文
posted @ 2012-01-14 14:25 dzqabc 阅读(3266) 评论(0) 推荐(0) 编辑