c++ exceptions

http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Exceptions

We do not use C++ exceptions. 

Advertisements

C++ dll

HowTo: Export C++ classes from a DLL

这篇文章写得太他妈好了

最近学COM,因为即将开始的工作会要到

以前听说过,但是从来没学过

好像用到过,但是很少

c++没怎么学好,就转向java

来这边后又用c++,但主要都是写算法

五年一晃就过去了

人也彻底落后于时代了

新的技术基本上都没摸过

听到com的第一感觉是技术太老了吧?过时了吧?

不过无所谓

只要需要,我就得去学习

其实现在边学com还边学windows programming

真是惭愧

不过现在学习觉得也很有乐趣,以及收获

以前也编过gui,mfc,但是其实不是很精通

最大的问题是不知道该如何复用

也用过java写gui,代码结构很好,复用也特别方便

但是mfc跟这个架构差很多

听说要用mfc,第一感觉也是过时

感觉Qt要先进的多。或者,用c#写肯定也更好

不过还是无所谓

别人说要用什么,那就学什么

这次得把mfc里里外外都得摸个透

不能像以前那样了

所以下载了petzold的windows programming来看

大家都说它好

这本书是99年出的

那个时候我大三,正在学windows programming,liu zhen an老师

结果可以想象

虽然十几人的course project都是我一个人搞定

同时还写了些其他的东西

但现在回想起来,也就是用用vc,套套模板而已

什么多态,消息,那个时候基本上没啥理解

多态是后来学习design patterns,学java,oo,才慢慢体会的

现代的gui框架基本上都是建立在多态的基础上的

不用搞清楚windows底层的消息机制肯定也没关系

但是mfc的框架还是很原始,而且大量用了原始的windows api

所以呢,我还得好好学习这个,不然就像petzold说的,不搞清楚,迟早会被咬到

回头说COM

从图书馆借了本inside com

抽空看了一下

前面简单,但是后面又有些模糊,还得好好从头琢磨

com到底是干啥的?啥目的?如果让我来设计,我怎么设计?

于是今天又找dll的资料,因为觉得这个自己并不是特别清楚,书上也没怎么讲

再惭愧一下。dll以前也用过,但是很少,也不精通,基本上囫囵吞枣

一直不喜欢dll需要的关键字什么export/import

觉得会污染代码

虽然绝大多数类库都会用这个

现在自己的类库的重用方式是static library

感觉比较接近java

今天看了一下最上面的那篇文章后

觉得static library其实好处还是蛮多的

如果是dll的话,c++的类复用非常难办,潜在问题很多

但相比之下,C的复用要方便,直接的多,问题也少

当然,二进制方面

怪不得C的流行度到现在还是比c++要高得多

既然c++的二进制复用有很多问题,那该咋办呢?

于是我们有了COM

C里面没有Interface这个东西,只有单个的函数

Interface这个东西是面向对象里面的,也就是在一起的一堆的函数

纯虚

而COM呢,主要就是面向Interface

既然是纯虚,就只能用指针

用指针,就意味着有实现被创建

也就意味着得释放这个对象,对于c++语言

所以呢,AddRef跟Release是另外两个必要的接口

另外呢,创建,有东西被创建,怎么被创建呢?

需要一个创建函数,或者一个创建类,叫IClassFactory,在客户端呢,叫CoCreateInstance

其他的还有registration等等。得再研究研究,不然就是胡说八道了。

 

Qt, VC

本来想要一个lightweight的C++ gui library的

不过看来不大可能了

找来找去还是Qt

http://stackoverflow.com/questions/115045/good-c-gui-library-for-windows

怎么在visual studio里面用呢?

http://www.pc-maniac.com/

注意第二步一定要这么干:programm files->visual studio 2008-> vs 2008 tools-> vs 2008 command promt

不能直接到Qt目录下面configure,否则就老是报错

一般好像就需要QtCore和QtGui

 

 

you don't know something until you teach it

http://www.possibility.com/Cpp/CppCodingStandard.html

以前听到的说法是一件事情如果你能说清楚才能说明你想清楚了。这句话更为极端。当然也似乎更深刻。

Comments are teaching what you
are doing to someone else. When you are writing comments you must generate the thoughts to
teach, to explain to someone else the intent behing what you are doing. It’s very difficult
to make a coding error when all this context is hot in your mind.