当前位置: 代码迷 >> 综合 >> error C4996: 'setmode': The POSIX name for this item is deprecated解决方案
  详细解决方案

error C4996: 'setmode': The POSIX name for this item is deprecated解决方案

热度:73   发布时间:2023-12-17 16:29:22.0

在使用VS2012编译zlib库官方提供的案例程序 zpipe.c 中代码时报错:
信息如下:

错误  1   error C4996: 'setmode': The POSIX name for this item isdeprecated. Instead, use the ISO C++ conformant name:_setmode. See online help for details.    

解决方案:
將代码中的setmode函数用_setmode替换,fileno用_fileno替换。

即將下面代码

#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
# include <fcntl.h>
# include <io.h>
# define SET_BINARY_MODE(file) setmode(_fileno(file), O_BINARY)
#else
# define SET_BINARY_MODE(file)
#endif

替换为:

#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
# include <fcntl.h>
# include <io.h>
# define SET_BINARY_MODE(file) _setmode(_fileno(file), O_BINARY)
#else
# define SET_BINARY_MODE(file)
#endif

这样就可以编译通过了。

  相关解决方案