【发布时间】:2016-08-09 12:18:34
【问题描述】:
我有一个调用fprintf 的程序。在 Visual Studio 2013 中,编译和执行的所有内容都没有错误和警告。现在该项目已迁移到 Visual Studio 2015(没有任何更改),我在大多数 fprintf 调用中都收到以下警告:
C4474: too many arguments passed for format string
这些警告大多指向以下代码行:
fprintf (stderr,"Missing header file name. Formant is :\n", pArg);
我该如何解决这个问题?我需要重写我的代码还是我的项目设置有问题导致这些警告?
我看到,在this MSDN 文章中对这些功能进行了更改:
所有 printf 和 scanf 函数的定义已内联移动到 stdio.h、conio.h 和其他 CRT 头文件中。
这与我的问题有关吗?这只是 VS 2015 中的一个无害更改,还是这里也存在潜在的崩溃陷阱?
【问题讨论】:
-
参见Breaking Changes in Visual C++ 2015,特别是“
和 ”部分 -
请提供一些代码,以便我们指导您正确的方向。
-
建议您展示一个显示此行为的代码的最小、完整示例。较新的编译器可以有更好/更多的警告。可能是您的代码总是有问题,但现在被较新的编译器标记。因此,请显示您的代码。
-
您是否计算过 VS2015 抱怨的 printf 调用的参数?号码是否正确?还是新的 C4474 只是为您指出了迄今为止尚未发现的错误? ;-)
-
这看起来像是一个潜在的好问题,可能会帮助人们迁移到 VS2015,但它缺乏信息。请提供MVCE
标签: c++ c visual-studio visual-studio-2015 printf