随笔分类 -  C/C++

摘要:转载:http://www.spongeliu.com/415.htmllinux内核和其他一些开源的代码中,经常会遇到这样的代码:do{ ...}while(0)这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢?实际上,do{...}while(0)... 阅读全文
posted @ 2015-09-23 16:26 HelloMarvin 阅读(510) 评论(0) 推荐(0)
摘要:转载:http://blog.sina.com.cn/s/blog_6a1837e90101128k.htmlregister:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率。注意是尽可能,不是绝对。你想想,一个CPU 的寄存器也就那么几个或几十个,你要... 阅读全文
posted @ 2015-09-23 15:40 HelloMarvin 阅读(212) 评论(0) 推荐(0)
摘要:摘抄自: >在 Linux 内核中,经常会看到do{} while(0)这样的语句,许多人开始都会疑惑,认为do{} while(0)毫无意义,因为它只会执行一次,加不加do{} while(0)效果是完全一样的,其实 do {} while(0)的用法主要用于宏定义中。 这里用一个简单点的宏来演示... 阅读全文
posted @ 2015-05-11 16:25 HelloMarvin 阅读(1573) 评论(0) 推荐(0)
摘要:GNU C的一大特色就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。其位置约束为: 放于声明的尾部“;”之前__attribute__书... 阅读全文
posted @ 2015-05-06 18:16 HelloMarvin 阅读(28570) 评论(1) 推荐(0)
摘要:直接上代码: 1 #include 2 #include 3 4 int main () 5 { 6 int arry[] = {0,1,2,3}; 7 int val = 888; 8 int *p, *tmp; 9 10 p = &arry[0];11 val = *p... 阅读全文
posted @ 2015-04-16 15:49 HelloMarvin 阅读(512) 评论(0) 推荐(0)
摘要:在gcc中,可以使用attribute关键字,声明constructor和destructor,来指定了函数在main之前或之后运行,代码如下: 1 #include 2 3 __attribute((constructor)) void before_main() 4 { 5 prin... 阅读全文
posted @ 2015-04-16 15:13 HelloMarvin 阅读(335) 评论(0) 推荐(0)
摘要:C 中static 用来修饰局部静态变量和外部静态变量、函数。C++中除了上述功能外,还用来定义类的成员变量和函数。即静态成员和静态成员函数。注意:编程时 static的记忆性,和全局性的特点可以让在不同时期调用的函数进行通信,传递信息,而 C++的静态成员则可以在多个对象实例间进行通信,传递信息。 阅读全文
posted @ 2015-03-26 17:45 HelloMarvin 阅读(184) 评论(0) 推荐(0)
摘要:速查表:char-128 ~ +1271Byte-2^7 ~ 2^7-1unsigned char0 ~ 2551Byte0 ~ 2^8-1short-32767 ~ + 327682 Bytes-2^15 ~ 2^15-1unsigned short0 ~ 655362 Bytes0 ~ 2^16... 阅读全文
posted @ 2015-03-26 17:35 HelloMarvin 阅读(898) 评论(0) 推荐(0)
摘要:一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小... 阅读全文
posted @ 2015-03-26 16:35 HelloMarvin 阅读(188) 评论(0) 推荐(0)
摘要:1. 范围float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:float:1bit(符号位) 8bits(指数位) 23bits(尾数位)double:1bit(符号位) 11bits(指数位) 52bits(尾数位)于是,flo... 阅读全文
posted @ 2015-03-26 16:13 HelloMarvin 阅读(1219) 评论(0) 推荐(0)
摘要:Little endian 和Big endian 是CPU 存放数据的两种不同顺序. 对于整型、长整型等数据类型. Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节); 而Little endian 则相反, 它认为第一个字节是最低位字节(按照从低地址到高地址的顺序存放数据的低位字节到高位字节).Address 0x0000 0x0001 0x0002 0x0003big-endian 0x12 0x34 0xab 0xcdlittle-endian ... 阅读全文
posted @ 2013-02-02 15:14 HelloMarvin 阅读(253) 评论(0) 推荐(0)
摘要:union 维护足够的空间来置放多个数据成员中的"一种"而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址,union 主要用来压缩空间,如果一些数据不可能在同一时间同时被用到,则可以使用union。一个union 只配置一个足够大的空间以来容纳最大长度的数据成员,例如下面的StateMachine 的空间大小就是double 数据类型的大小1 union StateMachine2 {3 char character;4 int number;5 char *str;6 ... 阅读全文
posted @ 2013-02-02 15:04 HelloMarvin 阅读(386) 评论(0) 推荐(0)