Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2565370
  • 博文数量: 315
  • 博客积分: 3901
  • 博客等级: 少校
  • 技术积分: 3640
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-08 15:32
个人简介

知乎:https://www.zhihu.com/people/monkey.d.luffy Android高级开发交流群2: 752871516

文章分类

全部博文(315)

文章存档

2019年(2)

2018年(1)

2016年(7)

2015年(32)

2014年(39)

2013年(109)

2012年(81)

2011年(44)

分类: C/C++

2012-09-08 20:02:08

工作也一个多月了,看了几乎一个月的代码,练习了几个模块,实战了一部分任务,差不多算是上手了吧,不过自己感觉还远远不够,还需要很多文档才可以了解得更多。有时候需要的已经不是代码如何编写了,而更多的是业务逻辑,需求,所以这段时候尽量多看点源码,试着在没有文档的前提下去了解该模块是做什么的,其实如果有文档可能会更加清楚。不过现在差不多都看了一遍了,现在想去看所有的头文件,把每个头文件的功能了解清楚,这样以后在开发的时候就方便多了。相当于在学习一门新的语言,然后了解每个函数的功能。
  由于所有的库都是公司内部自己封装的,目的是为了和标准库区别?因为这些库需要在各种平台下运行,因此没办法,只能自己封装了,不然怎么适应各种平台使用了。
跟着师傅学了这么久,自己写了几个模块,也让师傅点评了。收获很大,很感谢师傅的教导。其中学到的最多的时候代码的书写风格和逻辑的严谨性,还有就是在过程中用不断的根据实际的情况编写最合适的代码。这点很重要,最后就是代码的调试,代码调试和修改占了几乎和开发或者甚至比开发更大的工作量,因此这点需要利用我们所学的知识,利用堆栈,寄存器,内存,甚至汉字编码表(这是我在调试的时候用到的,后面会谈到,估计没有我这么笨的人了)等等知识!过程中汲取教训,汲取经验,be stronger!
还是先说下carbide.c++的一些东西吧,symbian的东西虽然已经落寞,但是还是点市场的,因此公司的产品还是要包含这个平台的,而且用来做通用平台接口的开发工具也还行,和eclipse差不多的,其实就是从eclipse发展而来,所以还行吧。过程中遇到了一些小问题,这里总结下,下次再进行开发和调试的时候如果出现问题就知道如何解决了!!!

问题1:
Carbide.c++ Licenses expired 过期的处理方法: C:\Program Files\Nokia\Carbide.c++ v2.0\Carbide.c++ Licenses\下的 Current_Active_License内容中2009全部替换为2020更远!

问题2:
S60模拟器安装程序删除
//Our directory C:\Symbian\9.2\S60_3rd_FP1_2\Epoc32\release\winscw\udeb .exe C:\Symbian\9.2\S60_3rd_FP1_2\Epoc32\release\winscw\udeb\z\private\10003a3f\apps .rsc和相关 C:\Symbian\9.2\S60_3rd_FP1_2\Epoc32\release\winscw\udeb\z\resource\apps .mif和相关 C:\Symbian\9.2\S60_3rd_FP1_2\Epoc32\Data\z\resource\apps .rsc和相关 C:\Symbian\9.2\S60_3rd_FP1_2\Epoc32\Data\z\private\10003a3f\apps

问题3:
//打印显示
         uint32_t a = strlen(pPoiDetailsPOIData->pATickets->pAttractionsTextTitle);
         wchar_t * p = (wchar_t *)malloc(a *3+3); //特殊汉字占3个字节
         memset(p,0,a *3+3);
         utftouni(pPoiDetailsPOIData->pATickets->pAttractionsTextTitle,a
                 ,p,a *3+3);
         uint32_t len = wcslen(p);
         
         TPtrC ptr;
         ptr.Set((const TUint16*)(p), len);
         CEikonEnv::InfoWinL(ptr, _L("success"));
         
 //完成之后,如果显示小白框:
 解决如下:(看你当前使用的sdk,可能是1.0 1.0.2之类的,选正在使用的)
  方法:开始—>程序—>S60 developer Tools —>3rd edition SDK —>1.0 —> languages —>Change to Chinese 这样就可以了。
 来自网友: 谢谢!


来自网络:
(3)s60 2nd/3rd模拟器联网问题 s60 2nd比较麻烦,需要下载prnesock.lib和prnesock.dll,这两个都需要拷贝到目录 /epoc32/release/wins/udeb/ (我上传了这两个文件,就在下面) 下面,然后在mmp文件中添加如下条件编译代码: #if defined(WINS) LIBRARY prnesock.lib #else LIBRARY esock.lib #endif 在自己的实际代码中,涉及到接入点以及RConnection操作的都要用 #ifndef __WINS__ 或者 #ifndef __WINSCW__ #endif 给括起来,直接调用iSocketServ.Connect()即可实现在模拟器上利用win32的socket 连网和单步调试。这一点可以参考我发布的NetTest的代码。


L"\x7279\x4EF7\x95E8\x7968" 
     特    价    门    票 
        汉字编码表
我在和后台服务器调试程序的时候,获取的下行数据中,有个字段是特价门票,是utf编码的,当然要在模拟器中显示需要转换成unicode编码,因此我按照师傅的方法转了,但是出现四个小白框,我以为是获取的下行数据的问题!然后我想啊想,最后我没招,我去查看内存的值,然后看了下接收到的字段的编码值,挨个对了下汉字编码表,对的,最后我告诉后台,你那边肯定是对的,是我这边问题!然后我就上网搜了下,出现的这种情况,搞了一个下午终于知道了,原理是我的模拟器问题,不支持英文下显示中文,因此我按照上述问题3,果然ok了!唉,但是很奇怪师傅的就没问题,看来还是我这边配置问题。

要记住写代码的时候任何的情况都要严谨,不要闲麻烦!内存申请或一定要记得释放,切记切记!!!组建上行数据的时候,要记住以二进制流的方式,获取下行数据的时候,以特定的方法从二进制流中转换得到每个你需要的字段值!每个函数都需要对参数进行严格检查,即使可能你的函数是被另一个函数调用,参数也是从调用函数传入,但是考虑我们的函数的独立性和严谨性,也需要判断错!

关于const,传入的参数如果只是利用其值,千万要加上const,你不加,也没人逼你,但是不好!还有一个提醒就是,你写了一个模块:包括创建,得到数据,销毁等接口,那么别人也会按照你的顺序调用。这时候你的返回的数据如果是在销毁接口中会被销毁的,那么你的得到数据的接口就可以加上const,因为你不需要去对这个返回数据进行操作,so你懂的!

态度决定一切,一切只是一个开发!


Me需要不断的学习,学习自己人生事业的计划的点点滴滴,让自己的基础打扎实,以前以为自己基础还行,实战后才发现还不行!之后才是提升....
阅读(2201) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~