在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/