Danny Kalev是Informit.com网站C++板块的主持人,一个我比较欣赏的、死忠于C++的、略带有神经质的、敏感的blogger。今天他在informit上发表了一篇文章,题目吓死人:“Visual C++ 8.0劫持C++标准”。我赶忙跑来一看,原来是关于一个编译警告的。大致是这样的:VC++ 8.0对于std::copy算法的某种用法给出了这样的警告“此函数已经被废弃”。这还了得,惹恼了一向心地纯洁的Danny,于是写出文章来声讨。据他在文章里说,这个事情目前正在C++标准委员会的maillist中爆吵。
我觉得,C++有幸拥有一批像Danny Kalev这样的纯洁主义者,才没有成为巨人手中的玩物。C++也有幸拥有一些像Microsoft这样的big player,才能不断搞些新花样出来,不至于窒息而死。微软为什么要对这个std::copy提警告,原因很简单:安全性。这个std::copy的行为跟C语言的strcpy, memcpy差不多,是不由分说的,不计后果的。只要你脑子短路一秒钟,这个算法就能让你的应用程序分崩离析。
我该支持VC++的做法吗?也支持也不支持。正如我准备在马上召开的C++技术大会上的演讲里说的那样,一切有助于提高C++生产率的改进都是值得赞赏的。如果VC Compiler只是温存的建议和善意的提示一下,那么我想这里是没有任何争议的。这个提示也许可以让你避免几个星期的痛苦的debugging,对于生产率的提升效果不言而喻。然而,微软的警告用语是蛮横的,越过了界限。“废弃?”,微软认为自己有权废弃一个ISO标准中的算法?仅仅因为自己开发了一个编译器?这就好像是说,一家生产皮尺的公司可以改变1米的度量一样可笑。Danny通篇抨击的也就是这一点。
不过问题在于,看看这个标题,“劫持”,Danny,你的用语是不是也越过了界限呢?不管怎么说,我不认为VC8与标准C++是对立的东西。不,我认为VC8不是邪恶势力企图将C++引入歧途的工具,而是引导C++迈向未来的重要一步。只不过,微软即使要裹挟C++,动作也应该温柔一点。毕竟这不是你自家的VB和C#,想怎么掰持就怎么掰持。
分享到:
相关推荐
(Visual C++编程 源代码)1.如何设置光标1.如何设置光标?(Visual C++编程 源代码)?(Visual C++编程 源代码)1.如何设置光标?(Visual C++编程 源代码)1.如何设置光标?(Visual C++编程 源代码)1.如何设置...
(Visual C++编程 源代码)1.如何使用滑块控件?(Visual C++编程 源代码)1.如何使用滑块控件?(Visual C++编程 源代码)1.如何使用滑块控件?(Visual C++编程 源代码)1.如何使用滑块控件?(Visual C++编程 源...
(Visual C++编程 源代码)8.如何在程序窗口中创建按钮控件?(Visual C++编程 源代码)8.如何在程序窗口中创建按钮控件?(Visual C++编程 源代码)8.如何在程序窗口中创建按钮控件?(Visual C++编程 源代码)8....
(Visual C++编程 源代码)1.如何打开文件?(1.如何打开文件?(Visual C++编程 源代码)Visual C++编程 源代码)1.如何打开文件?(Visua1.如何打开文件?(Visual C++编程 源代码)l C++编程 源代码)1.如何打开...
(Visual C++编程 源代码)20.如何实现图像的马赛克效果?(Visual C++编程 源代码)20.如何实现图像的马赛克效果?(Visual C++编程 源代码)20.如何实现图像的马赛克效果?(Visual C++编程 源代码)20.如何实现...
(Visual C++编程 源代码)4.如何设置工具栏按钮提示?(Visual C++编程 源代码)4.如何设置工具栏按钮提示?(Visual C++编程 源代码)4.如何设置工具栏按钮提示?(Visual C++编程 源代码)4.如何设置工具栏按钮...
(Visual C++编程 源代码)1.如何调节系统音量?(Visual C++编程 源代码)1.如何调节系统音量?(Visual C++编程 源代码)1.如何调节系统音量?(Visual C++编程 源代码)1.如何调节系统音量?(Visual C++编程 源...
(Visual C++编程 源代码)9.如何关闭应用程序?(Visual C++编程 源代码)9.如何关闭应用程序?(Visual C++编程 源代码)9.如何关闭应用程序?(Visual C++编程 源代码)9.如何关闭应用程序?(Visual C++编程 源...
(Visual C++编程 源代码)3.如何捕捉光标热区?(Visual C++编程 源代码)3.如何捕捉光标热区?(Visual C++编程 源代码)3.如何捕捉光标热区?(Visual C++编程 源代码)3.如何捕捉光标热区?(Visual C++编程 源...
(Visual C++编程 源代码)2.如何使用颜色对话框?(Visual C++编程 源代码)2.如何使用颜色对话框?(Visual C++编程 源代码)2.如何使用颜色对话框?(Visual C++编程 源代码)2.如何使用颜色对话框?(Visual C++...
(Visual C++编程 源代码)2.如何使用标签控件?(Visual C++编程 源代码)2.如何使用标签控件?(Visual C++编程 源代码)2.如何使用标签控件?(Visual C++编程 源代码)2.如何使用标签控件?(Visual C++编程 源...
(Visual C++编程 源代码)6.如何将应用程序窗口居中显示?(Visual C++编程 源代码)6.如何将应用程序窗口居中显示?(Visual C++编程 源代码)6.如何将应用程序窗口居中显示?(Visual C++编程 源代码)6.如何将...
(Visual C++编程 源代码)4.如何写文件?(Visual C++编程 源代码)4.如何写文件?(Visual C++编程 源代码)4.如何写文件?(Visual C++编程 源代码)4.如何写文件?(Visual C++编程 源代码)4.如何写文件?...
(Visual C++编程 源代码)3.如何读文件?(Visual C++编程 源代码)3.如何读文件?(Visual C++编程 源代码)3.如何读文件?(Visual C++编程 源代码)3.如何读文件?(Visual C++编程 源代码)3.如何读文件?...
(Visual C++编程 源代码)3.如何终止指定进程?(Visual C++编程 源代码)3.如何终止指定进程?(Visual C++编程 源代码)3.如何终止指定进程?(Visual C++编程 源代码)3.如何终止指定进程?(Visual C++编程 源...
(Visual C++编程 源代码)9.如何获取默认图标大小?(Visual C++编程 源代码)9.如何获取默认图标大小?(Visual C++编程 源代码)9.如何获取默认图标大小?(Visual C++编程 源代码)9.如何获取默认图标大小?...
(Visual C++编程 源代码)5.如何定位文件?(Visual C++编程 源代码)5.如何定位文件?(Visual C++编程 源代码)5.如何定位文件?(Visual C++编程 源代码)5.如何定位文件?(Visual C++编程 源代码)5.如何定位...
(Visual C++编程 源代码)2.如何裁剪光标?(Visual C++编程 源代码)2.如何裁剪光标?(Visual C++编程 源代码)2.如何裁剪光标?(Visual C++编程 源代码)2.如何裁剪光标?(Visual C++编程 源代码)2.如何裁剪...
(Visual C++编程 源代码)2.如何关闭文件?(Visual C++编程 源代码)2.如何关闭文件?(Visual C++编程 源代码)2.如何关闭文件?(Visual C++编程 源代码)2.如何关闭文件?(Visual C++编程 源代码)2.如何关闭...
(Visual C++编程 源代码)8.如何实现图形的拉伸显示效果?(Visual C++编程 源代码)8.如何实现图形的拉伸显示效果?(Visual C++编程 源代码)8.如何实现图形的拉伸显示效果?(Visual C++编程 源代码)8.如何实现...