【问题标题】:How to develop C with Visual Studio 2010?如何使用 Visual Studio 2010 开发 C?
【发布时间】:2011-08-11 20:49:44
【问题描述】:

有没有办法用 Visual Studio 2010 开发纯 ANSI C?

【问题讨论】:

  • @Atha:我看不出那条评论是为了煽动一场激烈的战争。您含蓄地贬低 Microsoft 的 C 编译器为“不合适”的编译器,这甚至看起来都不公平。你显然没有为你的观点提供任何形式的支持,甚至没有明确表示它实际上是一种观点。你只是对 GCC 有个人偏好,这当然没有错,但客观上没有什么比 cl.exe 更适合 GCC,如果你能克服它与 IDE 捆绑在一起的事实。
  • MS 编译器是正确的 C++ 编译器,而不是正确的 C 编译器。为什么有人会想用一个不应该做C的编译器来开发C。MS编译器甚至不完全兼容C90。
  • @Atha:再一次,你声称它不是一个合适的 C 编译器,却没有为你的观点提供任何支持。检查我的答案;如果您知道自己在做什么,它是一个完全有效的 C 编译器。 GCC 也没有完全符合规范的某些领域。争论这些并不是特别有效。文档中没有说微软的编译器“不应该做 C”。
  • @Cody 我认为 Atha 带来的差异是因为在 msvc 中遇到基本兼容性问题似乎更常见,而且比在 GCC 中更少。即使不是这种情况,msvc 也有一些奇怪的功能,这些功能似乎旨在最大限度地减少代码可移植性,而不会立即减少销售量。尝试使用任何一种制作样板代码的向导,看起来他们制作的代码会阻塞其他编译器。您可能还想搜索“mscv c compliance”或“msvc vendor lockin”。

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


【解决方案1】:

通过将文件扩展名更改为 .c 可以帮助您入门,但这里也对项目文件进行了一些更改。详情见这里:http://support.microsoft.com/kb/829488/en-us

还有一个很好的播客:http://channel9.msdn.com/Blogs/Sam/C-Language-Programming-with-Visual-Studio-2010-Ultimate-Pro-or-VC-Express

【讨论】:

    【解决方案2】:

    是的,这是可能的。 MSDN 在这里提供了一些信息:ANSI C Compliance

    第一步是设置编译器生成 C 代码,而不是 C++ 代码。从项目的属性中执行此操作。展开 C/C++ 标题,然后单击“高级”。将“编译为”属性设置为“编译为 C 代码”(这与在命令行中指定 /TC switch 相同)。更简单的方法是使用 *.c 扩展名命名您的文件。

    第二步是禁用 Microsoft 对 ANSI 标准的扩展。这些由/Za and /Ze compiler switches 管理。您也可以在项目的属性中找到这些。 /Za 导致编译器针对不符合 ANSI 标准的语言构造发出错误。 /Ze 开关启用 Microsoft 特定的扩展;你想确保这个是关闭的关闭

    虽然我不相信微软完全支持 C99 标准。请参阅(并投票!)来自 VC++ 团队的this bug report on MS Connectthis blog entrythis page,以获取明显缺乏支持的具体示例。但是,它确实完全支持 C90 标准。

    【讨论】:

    • 请注意,自 2005 版起 /Ze 开关已弃用。
    • @WindRider 大概是因为它是默认选项。指定它与 not 指定它的含义相同。这让它变得毫无意义。您需要的唯一开关是\Za。如果指定,您将获得严格的 ANSI 合规性;如果没有,您将获得 Microsoft 特定的扩展。
    • /Za 开关(答案中的第二步)位于属性 >> C/C++ >> 语言下
    • 我认为 VS 2012 和之前的版本只支持 C89 C 标准,除了少数 C99 扩展。 social.msdn.microsoft.com/Forums/vstudio/en-US/… 是一个关于它的讨论线程。它还提到 MS 没有计划支持任何更新的 C 标准。
    猜你喜欢
    • 2012-07-08
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    相关资源
    最近更新 更多