vc++6.0编写c程序,vs2015和vc6.0 c++一样吗
最近把一个系统的源代码从VC 6.0移植到VS C 2005,获得了一些经验。不同编译平台上的代码迁移(这里指的是从较低版本编译器到较高版本编译器的代码迁移)的成本主要由两个方面组成。一个是系统库的变化带来的开销,比如API函数、类成员函数的变化;二是较低版本编译器编写的代码不标准所带来的成本(一般来说,较高版本的编译器对程序语法的检查更严格)。分析这两方面的成本,前者是我们第三方开发者无法控制的,后者是我们可以控制的,后者产生的编译错误更多,花费的时间也更多。通过这次迁移,我觉得:如果用VC 6.0开发时遵循一些原则,迁移到VS C 2005会方便很多。以下是我的一些经历:
1)尽可能使用标准C语法编写C代码。例如,标准C-type转换器(如staic_cast)用于类型转换,使用标准C库函数(如)时指定实际参数类型
long I=0;
double j=sqrt(I);
上面两行代码在VC 6.0中不会出现编译错误(可能会出现编译警告),但是在VS 2005中,使用sqrt函数会出现一个不明确的错误。为了避免这个错误,你最好这样写:
long I=0;
double j=sqrt(static _ cast double(I));
2)如果实现同样的功能,首选成熟的开源库。因为很多成熟的开源库本身就有跨平台的设计,而且代码是经过标准化和锤炼的。之前在VC 6.0上用msxml4.dll读写xml文件,移植到VS 2005上。结果是,因为VS 2005内置了对xml的支持,所以出现了很多不明确的错误(msxml,msxml3命名空间冲突)。如果我开始用tinyxml、libxml等开源库读写xml文件,我只需要把这些开源代码拿到VS 2005上,编译新的库文件。
3)必须设置函数的返回值。如果没有返回值,将设置为void类型。如果没有定义函数返回值,VC 6.0默认返回int类型,但是VS 2005会报错。
4)尽量用unicode字符集编译。这是推荐的原则。众所周知,VC 6.0默认使用多字节字符集编译。但是《Windows核心编程》告诉我们用unicode字符集编译有很多好处:
A.简化应用程序本地化的代码转换
B.不同语言之间的数据交换很容易
C.使您能够分配单个二进制。支持所有语言的exe文件和DLL文件。
D.提高应用程序的运行效率
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。