C语言
hjffly
这个作者很懒,什么都没留下…
展开
-
#和##
#是将其后面的宏参数进行字符化操作。##为连接符,用于将两个Token连接为一具Token,这里连接对象不一定是宏变量。原创 2011-03-06 13:36:00 · 3498 阅读 · 0 评论 -
注释
<br />/* */<br /> <br /> <br />#if 0<br />#endif原创 2011-03-06 13:38:00 · 352 阅读 · 0 评论 -
字节对齐
字节对齐原则:1. 结构体每个成员相对于结构体首地址的偏移量都是成员大小的整数倍;2. 结构体变量的长度为其最宽基本类型成员大小的整数倍__attribute__((packed))用于告诉编译器取消结构在编译过程中的优化对齐。因为按照实际占用字节数进行对齐,是GCC特有的语法。在TC下: struct my{char ch;int a;} sizeof(int)=2;sizeof(my)=3; (紧凑模式)在GCC下:struct my{char ch;int a;}原创 2011-03-06 13:29:00 · 549 阅读 · 0 评论 -
基本数据类型长度
C声明32位机器64位机器Char1Short2Int4Long48Float4double8 ~x+1 = -x原创 2011-06-14 19:26:00 · 427 阅读 · 0 评论 -
基本语法
typedef 变量名 新类型名 typedef int (*f)(void) //f指向一个函数,函数的返回值为int型 #define 标识符 被标识符代替的字符串 在用#define定义宏时,可用斜杠("/")续行 #define count(ary) ((int)(sizeof(ary)/sizeof((ary)[0]))) 在32位计算机上,打印64位整数,原创 2011-02-27 14:09:00 · 439 阅读 · 0 评论 -
设计定时器
定时器是我们需要经常处理的一种资源。在linux里面有一种进程中信息传递的方法,那就是信号。这里的定时器,就相当于系统每隔一段时间给进程发一个定时信号,我们所要做的就是定义一个信号处理函数。 #include struct timeval{ long tv_sec; //提供秒级精度 long tv_usec; //提供微秒级精度 }; /* 如果只指定it_v原创 2012-09-09 13:44:23 · 818 阅读 · 0 评论