在Win上离开了MS的Win Developer们怎么活

9
Apr
4

开发Windows程序离开了MS就不行了吗?当我们扔掉了VC,扔掉了MFC,扔掉了.Net Framework,可能因为买不起正版的原因连Delphi和C++ Builder都没的用的时候,我们如何在Win上开发呢?经过我一段时间的切身体会,我觉得如果你能接受以下几点还是可以的:

1.学会使用类似Eclipse这样的开源IDE,虽然被MS宠坏了的你可能觉得这些IDE“很原始”。

2.弄个标准的C++编译器,例如MinGW,尽量弄明白gcc那一堆能让你抓狂的编译选项和g++的另外一堆link选项(当然,你得搞明白link的原理,知道你要link的库的顺序)。

3.学会看懂和使用makefile(当然你也得弄明白里面的一堆make指令),下载了非MS平台的开源程序后习惯去找makefile而不是去找“工程”文件,因为根本就不会有“工程”文件!

4.去找个开源的windows sdk库,wxWidgets是个不错的选择,不过你得花一个小时用gcc编译你下载的这些SDK

5.当然,你还得再熟悉一点win32 api的知识,大概了解下MinGW里面的那一大堆win32 api头文件;如果你能忍耐到你变得够牛气的那一天话,可以用这堆api头文件来开发win程序。

6.最后,花点时间把你下载的那些SDK,编译器和你的IDE集成起来,成为一个可用的环境,不要以为IDE已经帮你弄好了,那是MS…., Eclipse里面的gcc和linker设置就够你头疼的,一个好建议是当你设置你的IDE时记得参考makefile

好了,如果以上几点你基本能搞定的话,恭喜你,你可以摆脱MS,用免费的,无版权问题的软件开发你的windows程序了。 不过有一点要提醒你,你得接受从被MS伺候的舒舒服服的“皇帝”变成一切都要自己动手的“劳动人民”这样的落差,如果这一切你都忍耐过来了,相信你要去开发linux程序也没啥问题了。

Filed under: C++

诡异的Symbian C++

6
Apr
3

最近买了一本《Symbian OS C++高效编程》,雾里看花的翻了翻前两章,结果才发现Symbian C++比在某些语法上已经稍显晦涩的标准C++还要诡异一些。

比如规定用T,C,R,M的类名前缀来区分不同用途,不同生命周期,不同资源释放方式的类(其实这可以理解为一种不错的编码规范)。T前缀的类表示在栈上分配,并一定没有析构函数的类(注意是“一定”),通常表示简单类型,例如TInt;C前缀的类表示在堆上分配,并一定要具有析构函数,一般表示用户定义的复杂对象类型;R前缀的类需要在析构函数之外,提供另外的类似Close这样的资源释放函数,一般表示资源,例如“文件”;M前缀的类表示接口。看看,要严格遵守这个规定,可能并不是一件容易的事情。

再说Symbian C++里面的异常处理,放弃了标准C++里面的try,catch,throw异常机制,而是使用一种“清除栈”+异常退出函数(User::Leave())+TRAP宏的异常处理方法(注意,Symbian C++还规定可能产生异常的函数必须用L做为后缀);这样做据说一是因为在设计Symbian C++的时候大部分编译器都不支持C++异常处理(很强大的理由…),二是因为这是C++异常处理的一个“嵌入式”版本,比起标准C++异常处理开销更小,更适合手机这样的资源有限系统。

嗯,看来有必要先把标准C++搞清楚,去做做什么练练手,再开始学习Symbian C++,不然越来越混乱了。

Filed under: C++