)为什么我收到下列代码的警告:)
代码:
_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还是斯特里斯特的那个?
发布于 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。在将来的版本中,旧的行为可能会被删除,所以代码应该更改为使用新的符合行为.。
发布于 2010-05-08 12:51:31
也许这个?
_stprintf(m_szFileNamePath, 256, _T("%s"), strFileName);
发布于 2009-08-18 13:44:36
微软提供了自己的CRT _swprintf扩展-不兼容(例如)
https://stackoverflow.com/questions/1293889
复制相似问题