上一页 1 ··· 74 75 76 77 78
  2012年8月4日
摘要: 慎用全局变量除了全局控制控制参数。1 可以传参数进来,return 出去2 函数内部用到的不死变量,模块内部用到的函数都用static修饰。而对外只提供模块封装好的输出函数。3 一个模块中用到的全局变量超过3个就用结构体封装起来,省的丢三落四而且清晰明了。此外函数内部的静态全局变量、静态全局数组不占用栈空间,用超了会报警的。可以放心用。可移植性:1 善用difine 将裸露的常量 设备IO等用准确的大写字母定义出来。2 将严重依赖平台的一些代码用函数抽象出来。3 创造自己的库函数。4 数据类型,通信格式统一。 阅读全文
posted @ 2012-08-04 22:18 杰瑞鼠 阅读(240) 评论(0) 推荐(0)
  2012年7月7日
摘要: 断言的用处就是入口参数过滤,参数可控。用法:1定义枚举变量限定参数范围: typedef enum{ 参数1=x1,\ 参数2=x2,\ ............,\ 参数n=Xn }变量_typedef;2 宏定义: #define IS_函数名_ok(参数) (((参数)==参数1)||\ ((参数)==参数2)||\ ............................. ((参数)==参数n))在"头文件.h"中定义以上内容,并做函数声明;然后在调用模块中包含该头文件并定义函数原型3 void 函数名(变量_typedef 参数){ assert_param( 阅读全文
posted @ 2012-07-07 23:41 杰瑞鼠 阅读(234) 评论(0) 推荐(0)
摘要: #define 字段 DO{语句1;语句2;。。。语句N;}while(0)通常 宏定义#define 后边代替展开的只能是一条语句,用该结构后可以代替多个语句,且执行一次。有的初始化语句就用该结构‘此外if(){ DO{if(条件1)语句1;break;\ if(条件2)语句2;break; ................ if(条件n)语句n;break; }while(0); //公共处理部分 return(1); else{ return (0); } 阅读全文
posted @ 2012-07-07 23:17 杰瑞鼠 阅读(241) 评论(0) 推荐(0)
  2012年6月20日
摘要: 一快捷键:1放大与缩小:CTRL+"+/-"2拖动屏幕:手型工具二操作步骤:1环境:在菜单栏中窗口-打开历史记录图层2新建图层:在右边点击图层然后双击可建立一个图层;复制图层:选中刚才的图层然后拖动下面倒数第二个新建图层上面可以建立一个图层的副本。2框选移动要修改的对象:图层0的眼睛点一下使其消失,保持图层0副本的眼睛是打开的状态,然后点框选按钮-框选对象-移动按钮-选中显示变换控件-拖动对象到合适位置。3旋转对象:此时的鼠标为旋转双向箭头,可以对其进行旋转(如何没有出现按CTEL+D),然后选对勾鼠标恢复正常,再次选择框选按钮并单击可以从修改模式中退出。4复制对象:框选对 阅读全文
posted @ 2012-06-20 23:28 杰瑞鼠 阅读(637) 评论(0) 推荐(0)
  2012年6月19日
摘要: 位段: 用法: typedef struct { unsigned char Bit0:1; // 占据的位的个数 unsigned char Bit1:1; unsigned char Bit2:1; unsigned char Bit3:1; unsigned char Bit4:1; unsi 阅读全文
posted @ 2012-06-19 20:03 杰瑞鼠 阅读(272) 评论(0) 推荐(0)
摘要: 关于数组指针,指针数组 函数的指针域指针函数老是弄不清楚,在这里对其区别和用法做个总结 数组指针与指针数组:一 数组指针: 数组指针int (*p)[n]又称为行指针,一维数组的指针,专门用来处理二维数组 int arry[m][n],因为其列数固定,可用数组指针操作其行索引。 用法:先定义二维数组 阅读全文
posted @ 2012-06-19 20:03 杰瑞鼠 阅读(171) 评论(0) 推荐(0)
上一页 1 ··· 74 75 76 77 78