我通常编程&在Linux下用gcc和-ansi标志编译;但我被迫做了一个Visual C ++的工作,每当我编译我的C代码时,我都会得到所有的微软警告,如
'fscanf':此函数或变量 可能不安全。考虑使用fscanf_s 代替。
尽管在MSDN Developer的网站上执行了一些设置ANSI C项目的步骤,但我得到了这些,但所有_s(“安全”)调用都不是ANSI C!
有关将Visual C ++ Studio置于严格的仅限ANSI模式的任何建议吗?
感谢。
答案 0 :(得分:6)
正如另一个答案所述,#define
'_CRT_SECURE_NO_WARNING
会解决您在问题中提到的具体警告。
如果您真的在寻找仅限ANSI的模式,那么最接近的是/Za
compiler switch。在Visual Studio IDE中,您可以在项目的“属性”对话框中找到它(在配置属性| C / C ++ |语言|禁用语言扩展下)。
请注意,几乎所有Windows应用程序都是在启用Microsoft的编译器扩展的情况下构建的;例如,我认为您甚至无法使用/Za
设置的Windows SDK标头。如果您的代码真的是严格的ANSI,那么您应该没问题。如果项目中有一些特定于Windows的部分,这些部分主要是严格的ANSI,那么您可能会隔离这些源,并且只构建那些未设置/Za
的单个源文件。
答案 1 :(得分:4)
可以通过定义_CRT_SECURE_NO_WARNING
转到Procect设置 - >预处理器并添加_CRT_SECURE_NO_WARNING
这并不是强制编译器遵守ANSI。只是压制使用......警告
答案 2 :(得分:2)
抑制特定警告的一种方法是在源中添加以下内容。
#if defined( _WIN32 )
#pragma warning(disable:4996)
#endif