学过C和C++以后,真正开始编程时,遇到的最大的困惑就是自动生成的程序模板里,有大量的系统自定义的数据类型,比如:HWND HINSTANCE等等。我的问题是:这些数据类型其实就是int是吗?所以,HWND hwnd实际上就等于int hwnd是吗?所以,按照我的理解:系统虽然使用了HWND这个数据类型,但这也只是便于阅读而已,实际上VC++系统并没有为HWND这个数据类型作过任何定义。我这样的理解对吗?
调试欢乐多
本来C/C++有typedef,推荐使用这个来建立标准的类型别名(但它不像Ada,也并没有建立真正的类型,除了class、struct、union等能建立以外,就是* & []),但是使用宏有另一些好处,它会把不同版本的处理放到预处理期,就是个巧妙的文字游戏,又不增加额外的运行时开销(Cer是很强调这一点的)。虽然很多人说宏不好,但是在C、C++的实践中,往往追求把宏发挥到极致。
Windows中典型不过的例子就是依赖_UNICODE的TCHAR、_T……,而C中典型的例子像stdarg.h,每种机器具体环境在自动变量的操作上有所区别,而通过使用预处理和宏,做到了可移植,统一代码。
C++不是Ada,没有值的范围约束,而且它的“强类型”和Ada是没法比的。没有
type SomeIntType is Integer Range 0..200; --这样的语法
在C++中,运算溢出往往并不报错。