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

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

我通常在 Linux 下使用 gcc 和 -ansi 标志进行编程和编译;但我一直被迫在 Visual C++ 中工作,每当我编译我的 C 代码时,我都会收到所有 Microsoft 警告,如

'fscanf': This function or variable may be unsafe. Consider using fscanf_s instead.

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

关于将 Visual C++ Studio 置于严格的 ANSI-only 模式有什么建议吗?

谢谢。

最佳答案

正如在另一个答案中提到的,#define'ing _CRT_SECURE_NO_WARNING 将解决您在问题中提到的特定警告。

如果您真的在寻找仅 ANSI 模式,最接近的是 /Za compiler switch .在 Visual Studio IDE 中,您可以在项目的“属性”对话框中找到它(在配置属性 | C/C++ | 语言 | 禁用语言扩展 下)。

请注意,几乎所有 Windows 应用程序都是在启用 Microsoft 编译器扩展的情况下构建的;例如,我认为您甚至无法使用设置了 /Za 的 Windows SDK header 。如果您的代码确实是严格的 ANSI,您应该没问题。如果您在项目中有几个特定于 Windows 的部分大部分是严格的 ANSI,您可能可以隔离这些源并且只构建那些未设置 /Za 的独立源文件。

关于c++ - 将 Visual C++ Studio/Express 设置为严格的 ANSI 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5353832/

相关文章:

c++ - 放弃 CPU 时间

c# - 如何将标签文本更改为 MySql 数据库中的最后一个值?

c# - 如何先创建 EntityFramework 代码的可视化模型

c++ - C++中的事件委托(delegate)

c++ - 在 C++ 中构造 vector

c++ - 为什么两个不同的未命名命名空间可以在一个 cpp 文件中共存?

visual-studio - 是否可以将 HTML5 验证添加到 Visual Studio?

windows - 如果从静态库调用,Atl CDialogImpl 不会显示在 DoModal 上

c++ - 如何使用 VS C++ 6.0 在 C++ 应用程序中嵌入 Python 2.4?

c++ - 表达式无效的空指针