一:自己的代码真是写的太菜了,多路电话网关大部分都是别人的代码,自己就写了一点点; 写的基本都没有对的,创建了一个信号量,信号量错了; 写了一个函数,函数分支没有写对,添加了处理menuid的情况,数据存错位置了; 编码能力是在是太差了;
二:
要养成好的习惯,多分支的情况,写的时候一定要注意;写完了要测试下;每个分支都要考虑到;
三:
写一个函数,一个功能用到新的技术,要明白为什么要这样写,每个函数是什么意思。
HANDLE CreateSemaphore(
LPSECURITY_ATTRIBUTESlpSemaphoreAttributes, // SD
LONGlInitialCount, // initial count
LONGlMaximumCount, // maximum count
LPCTSTRlpName// object name
);
功能:创建一个信号量
参数二:
设置信号量的初始计数
参数三:
设置信号量的最大计数
参数四:
指定信号量对象的名称 (最后一个信号量如果去了名称,不论你多少个线程创建,都会指向同一个信号量)
所以叫同名信号量;使用时一定要注意,就是这错误浪费了别人一天帮我调试
四:
在别人的功能之上添加东西的时候不要简单的copy,你要看清楚每部分的意思,不然到时候写的看着相同,实际不同;调试起来麻烦就大了
分机挂断功能将来电号码存在一个结构体里面,我添加了一个在menu处的挂断;复制了上面代码,谁知道取到的信息都是存在一个很复杂的结构体里,但是确实不同的位置; 最后导致取不到结果;调试了很久;
五:变量和函数名起的一定要看着就懂意思,不要用数字等去表示特殊含义; 比如 int type = 1;//表示来电,你这样别人完全就看不懂
分支的功能要单一,不要有多种混淆的意思;比如if(EXT_TO_MENU){}//这里就处理来电转语音菜单,不要去处理分机转语音菜单;
分机转语音菜单就得拿出来单独处理,这样使得结构更清晰;
六:在程序执行准确的
关键位置,和程序执行错误的
每一个位置,添加输出代码是非常非常非常重要的;这样大大简化了你调试的工作;
但是输出要醒目,知道是哪个函数,哪部分功能,不然就没有意义了;