vc6

思考

五迷三道 提交于 2019-11-26 15:13:16
  我知道迟早我要来弄弯管机的控制和仿真程序的,结果这一天早早的来到了。接手了这个项目的3D显示部分的任务,也着实看到了实验室的强人的代码。   弯管机的控制程序运行在工控机上面,而工控机本质是用PC机作为载体,装的XP作为操作系统。整个控制通过专业的控制卡进行。硬件方面不说,我也不是做硬件的,就从软件的角度看看代码就让我彻底晕死了。   整个项目用的是VC6进行设计开发,数据库用SQL SERVER 2000。麻烦的就在这个VC6上面,彻底的古老的玩意儿了,不完全支持STL,有些莫名奇妙的vector的BUG就出现在里面。就我来看整个界面是比较简单的,没有太多动态的部分,但是整个工程的代码让我看了就彻底郁闷了——几乎所有的窗体、按钮都是慢慢用MFC凑出来的,也就是说,界面纯粹用代码写出来的。结果,这个界面变得奇丑无比,想改一下相关的东西都很麻烦,想想全是API在那儿弄过去弄过来,一会儿一个SendMessage,烦不烦!我拿到这个代码以后想添加一个东西完全无从下手,在未编译运行之前根本不知道这个窗体是什么样子的,好歹那些纯静态的窗体你给我用画出来嘛。结果由于是他们要做多国语言,不得不硬编码。至于运行起来有动态的地方(其实也就是一些类似tabControl的东东)更是摸不着头脑,只有大概猜一下,然后设置一个断点,再运行一下,看看是不是那个地方,感觉比盲人摸象还牛

Will new return NULL in any case?

﹥>﹥吖頭↗ 提交于 2019-11-26 14:33:12
I know that according to C++ standard in case the new fails to allocate memory it is supposed to throw std::bad_alloc exception. But I have heard that some compilers such as VC6 (or CRT implementation?) do not adhere to it. Is this true ? I am asking this because checking for NULL after each and every new statement makes code look very ugly. Michael Burr VC6 was non-compliant by default in this regard. VC6's new returned 0 (or NULL ). Here's Microsoft's KB Article on this issue along with their suggested workaround using a custom new handler: Operator new does not throw a bad_alloc exception