将Visual C ++ Studio / Express设置为严格的ANSI模式

时间:2011-03-18 15:02:16

标签: c++ visual-studio visual-c++ ansi

我通常编程&在Linux下用gcc和-ansi标志编译;但我被迫做了一个Visual C ++的工作,每当我编译我的C代码时,我都会得到所有的微软警告,如

  

'fscanf':此函数或变量   可能不安全。考虑使用fscanf_s   代替。

尽管在MSDN Developer的网站上执行了一些设置ANSI C项目的步骤,但我得到了这些,但所有_s(“安全”)调用都不是ANSI C!

有关将Visual C ++ Studio置于严格的仅限ANSI模式的任何建议吗?

感谢。

3 个答案:

答案 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