修改vc编译器不支持stdint.h、inttypes.h的问题

原文地址: http://www.cnblogs.com/zyl910/archive/2012/08/08/c99int.html  

 

C99标准定义了stdint.h、inttypes.h,用于统一的跨平台数据定义。可惜VC、BCB等编译器对C99的兼容性较差,有些版本没有该头文件。本文对此进行探讨,编写了一套兼容VC、BCB、GCC的stdint.h、inttypes.h。

1.1 检查

  先检查一下各个编译器对stdint.h、inttypes.h的支持情况——
VC6:stdint.h、inttypes.h都没有。
VC2003:stdint.h、inttypes.h都没有。
VC2005:stdint.h、inttypes.h都没有。
VC2010:有stdint.h,没有inttypes.h。
BCB6:有stdint.h,没有inttypes.h。
GCC 4.7.0(Fedora 17):stdint.h、inttypes均有。
GCC 4.6.2(MinGW (20120426)):stdint.h、inttypes均有。


1.2 msinttypes

  在网上搜索,发现了msinttypes,它提供了兼容VC的stdint.h、inttypes.h。地址是——
http://code.google.com/p/msinttypes/

  msinttypes的安装方法——将压缩包中的stdint.h、inttypes.h放在VC的include目录。

  我试用了一下,msinttypes基本上能解决问题,但觉得该方法有存在以下缺点——
1. 配置麻烦。如果安装了多个版本的VC,每个目录下都要复制一份stdint.h、inttypes.h。
2. VC版本区别。VC2010支持了stdint.h,是否还需要复制msinttypes的stdint.h呢?
3. 只支持VC平台。msinttypes的头文件用条件编译检查是不是VC编译器,不允许在其他编译器上编译。
4. 存在一些小Bug,例如——VC6不支持“I32”长度控制字符串、VC6编译C++程序时wchar.h会报错。

你可能感兴趣的:(修改vc编译器不支持stdint.h、inttypes.h的问题)