首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >微软_stprintf警告

微软_stprintf警告
EN

Stack Overflow用户
提问于 2009-08-18 13:34:57
回答 5查看 19.7K关注 0票数 8

)为什么我收到下列代码的警告:)

代码:

代码语言:javascript
运行
复制
_stprintf(m_szFileNamePath,_T("%s"),strFileName);

警告C4996:'_ swprintf ':swprintf已更改为符合ISO标准,添加了一个额外的字符计数参数。要使用传统的Microsoft,请设置_CRT_NON_CONFORMING_SWPRINTFS。

我知道_strprintf是一个宏,如果定义了_UNICODE,它将计算为_swprintf,否则它将是sprintf。

这是什么_swprintf。有一个函数swprintf,但是为什么_stprintf计算为_swprintf而不是swprintf。

_xxx和xxx函数的b/w有什么区别?

编辑:

好的,_stprintf的UNICODE版本有两个定义,其中包括哪一个?

查尔·H还是斯特里斯特的那个?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-08-18 13:44:20

http://msdn.microsoft.com/en-us/library/ybk95axf%28VS.80%29.aspx

swprintf是sprintf的宽字符版本;指向swprintf的指针参数是宽字符字符串。swprintf中编码错误的检测可能与sprintf中的检测不同。swprintf和fwprintf的行为相同,只不过swprintf将输出写入字符串而不是类型文件的目标,而swprintf要求count参数指定要写入的最大字符数。这些带有_l后缀的函数的版本是相同的,只不过它们使用传入的locale参数而不是当前的线程区域设置。

在VisualC++ 2005中,swprintf符合ISO标准,该标准要求第二个参数size_t类型的计数。若要强制执行旧的非标准行为,请定义_CRT_NON_CONFORMING_SWPRINTFS。在将来的版本中,旧的行为可能会被删除,所以代码应该更改为使用新的符合行为.。

票数 5
EN

Stack Overflow用户

发布于 2010-05-08 12:51:31

也许这个?

代码语言:javascript
运行
复制
_stprintf(m_szFileNamePath, 256, _T("%s"), strFileName); 
票数 1
EN

Stack Overflow用户

发布于 2009-08-18 13:44:36

微软提供了自己的CRT _swprintf扩展-不兼容(例如)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1293889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档