在MVS2008中,此行工作正常:

_fsopen(file_name, "wb+", _SH_DENYRW);


2003年的Borland C ++ builderX抱怨参数_SH_DENYRW。我改为

_fsopen(file_name, "wb+", SH_DENYRW);


删除下划线,Borland现在可以很好地编译。我在做什么好吗?我在网络上的某处看到了此修改。

非常感谢..

最佳答案

微软一直在不断地努力,以使其C / C ++头文件和库中使用的名称更符合标准(尽管它们不一定对SDK头文件和库中的名称进行相同操作-一个微妙但重要的区别) 。因此,您会发现越来越多的非标准名称以下划线作为前缀。

但是,MS经常提供使用旧的,非标准的兼容名称的功能,以实现向后兼容。除非您告诉编译器使用严格的标准兼容性(例如,使用SH_DENYRW选项),否则您应该能够在MSVC或Borland中使用/Za名称,因为MSVC在share.h中定义了以下内容:

#if     !__STDC__
/* Non-ANSI names for compatibility */
#define SH_DENYRW _SH_DENYRW
#define SH_DENYWR _SH_DENYWR
#define SH_DENYRD _SH_DENYRD
#define SH_DENYNO _SH_DENYNO
#endif

#endif  /* _INC_SHARE */

关于c - _fsopen for Borland c++ builderX 2003和MVS2008中的C,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2594937/

10-09 01:14