有没有办法使visual C++;(9.0)生成与printf和x27类型不匹配的printf格式字符串的警告;阿格斯?

有没有办法使visual C++;(9.0)生成与printf和x27类型不匹配的printf格式字符串的警告;阿格斯?,c,visual-studio,visual-c++,printf,string-formatting,C,Visual Studio,Visual C++,Printf,String Formatting,Gcc很好地提供了查找printf相关bug的帮助。有没有办法在MSVC中获得相同的行为?具体来说,我希望编译器对参数进行某种程度的类型检查。出于各种原因,我明确地不想使用C++的iostream库。(我也不想使用boost格式) 引用上面的源代码,-WFormat基本上提供了以下功能 检查对printf和scanf等的调用,以确保提供的参数具有适合指定格式字符串的类型,并且格式字符串中指定的转换有意义 到目前为止,我能找到的最接近微软的版本是使用%d进行64位与32位版本的比较 具体来说,我希

Gcc很好地提供了查找printf相关bug的帮助。有没有办法在MSVC中获得相同的行为?具体来说,我希望编译器对参数进行某种程度的类型检查。出于各种原因,我明确地不想使用C++的iostream库。(我也不想使用boost格式)

引用上面的源代码,-WFormat基本上提供了以下功能

检查对printf和scanf等的调用,以确保提供的参数具有适合指定格式字符串的类型,并且格式字符串中指定的转换有意义

到目前为止,我能找到的最接近微软的版本是使用
%d
进行64位与32位版本的比较

具体来说,我希望编译器执行某种级别的类型检查 关于争论

编译器喜欢在C++代码中默认地进行类型检查。不幸的是,您正在尝试使用不提供该功能的C工具


只需使用IO streams,编译器将不仅仅在类型不匹配时发出警告:它将发出错误并无法完全编译代码

我认为这在Visual Studio中是不受支持的功能(我将尝试查找对此的引用)。我所知道的最接近的方法是使用
\u Printf\u format\u string\u

不幸的是,无法在编译时生成此类警告,但VC++代码分析工具将为具有不匹配参数的Printf类函数生成警告消息

有关详细信息,请参阅VC++中的
/analyze
选项

顺便说一句,人们一直在抱怨这一点,所以也许微软将来会做点什么:

与VS 2005相关,但特定于VS 2005:我有很好的理由避免Iostreams。主要是因为我不能容忍它们的缓慢性能,其次是因为在我的团队中,完全有偏见的意见printf样式的格式字符串更易于阅读和使用。我知道我缺少类型安全功能,这就是为什么我想要一些警告来弥补这种缺陷。我们非常善于遵守警告,所以我觉得这是满足团队需求的最佳折衷方案。