用 Visual Studio 2005 编译 C 程序?
Posted
技术标签:
【中文标题】用 Visual Studio 2005 编译 C 程序?【英文标题】:Compile C programs with Visual Studio 2005? 【发布时间】:2011-02-05 22:27:43 【问题描述】:我可以使用 Visual Studio 2005 编译简单的 C 程序吗?似乎只有为 VB、C# 或 C++ 创建项目的选项。如果可以,我需要做什么?
【问题讨论】:
相关:How to develop C with Visual Studio 2010? 【参考方案1】:为了给你一个更具体的答案,Visual Studio 肯定会在 C++ 项目下编译 C 代码。它甚至会将其编译为 C 代码,而不是 C++ - Visual Studio 将任何具有 .c 扩展名的内容视为 C 代码,并且默认情况下将按此编译。这在MSDN 的文档中得到确认(尽管仅针对 VS2008 和 VS2010 指定)。甚至还有一个编译器命令行开关 (/Tc
) 和任何 .c 文件的属性页面中的一个选项,用于将其编译为 C++ 代码,而不是 C 默认值。
【讨论】:
【参考方案2】:一般来说,C 是 C++ 的一个子集。对于一个简单的 C 程序,只需将其称为 C++ 项目。我手边没有该软件的副本,但是如果您创建一个扩展名为“.c”的文件,它可能会被视为 C。[我可能应该添加:“.. . 就像我在 90 年代初使用的 Visual Studio 和 Visual C++ 版本中所做的那样。]
更新:对于@R,他的编程语言不像他想象的那样最新:
C++ 是 C 的直接后代, 保留几乎所有的 C 作为一个子集。 C++ 提供更强大的类型检查 比 C 和直接支持更广泛 比 C 更丰富的编程风格。 从某种意义上说,C++ 是“更好的 C” 它支持编程风格 使用具有更好类型检查的 C 完成 和更多的符号支持(没有 效率损失)。在相同的 从某种意义上说,ANSI C 是比 K&R 更好的 C C.另外,C++支持数据 抽象,面向对象 编程和泛型编程 (参见 C++ 编程语言(第 3 版)”;附录 B 讨论 兼容性问题可用于 下载)。 [强调我的。]
该声明的作者是一个对 C++ 有一定了解的人,他的名字是Bjarne。在你试图通过挑剔地注意“几乎全部”来拯救自己之前,请阅读我写的内容:“一般,C......”
【讨论】:
C 不是 C++ 的子集。猜测不是答案。 为了进一步阐述和解释我的 -1,教一个新手 C 程序员使用 C++ 编译器编译他们的 C 代码可能是你能给出的最糟糕的建议,除非你的目标是让他们讨厌 C。 C 和 C++ 的交集是一种语言,它具有 C++ 与 C 相比的所有缺点,但没有任何优点。如果不出意外,听从您建议的人最终会误用malloc
,并且很可能会因为字符文字的类型和大小或提升问题等问题而在真正的 C 编译器上编写失败的代码。
实际上,R 教新手使用 C++ 编译器是他们遇到的最好的事情之一。 C++ 强制执行纯 C 中需要 lint 的许多事情。但是,如果您阅读我的实际 ANSWEER,您会注意到我建议创建带有“.c”扩展名的文件,这会导致它被视为 C。
无论关于 C 是 C++ 子集的声明的作者的名字是什么,该声明显然是错误的。曾经有一段时间,C 在这方面是松散的“子集式”,但那个时代早已一去不复返了。今天做出这样的声明只会让人们感到困惑。
该陈述非常正确,因为问题是关于 Microsoft Visual C++ 产品的。它没有实现 C99 或任何更现代的东西。【参考方案3】:
我尝试就问题提供图形反馈。从 Visual Studio 2008 中的项目 (1PassCompilerFixNotation) 和源文件 (emitter.c) 的属性对话框截取的屏幕截图应与 VS 2005 相同。
对于整个项目:
在解决方案资源管理器中右键单击项目节点并选择“属性”
通过在“高级”选项卡中设置条目“编译为”,可以更改语法和语义
编译为 C 代码 (/TC) 编译为 C++ 代码 (/TP)为项目。 (见下图)
对于特定文件:
在解决方案资源管理器中右键单击 C/C++ 文件并选择“属性”
通过在“高级”选项卡中设置条目“编译为”,可以更改语法和语义
编译为 C 代码 (/TC) 编译为 C++ 代码 (/TP)针对特定文件。 (见下图)
注意:特定文件设置取代项目默认设置。
【讨论】:
你说得对,这很好用。但更简单的是使用.c
文件扩展名。如果您将其保留为默认设置,VS 会自动编译诸如 C 代码之类的文件。【参考方案4】:
Microsoft Visual Studio 2005 带有可靠的 C89/90 编译器。在 VS2005 中使用 C 没有问题。带有.c
扩展名的文件将被自动编译为C 文件。 (或者您可以使用项目设置/命令行开关来覆盖语言,如其他答案中所述)。
请再次记住,VS 编译器仅支持“经典”C89/90。不支持 C99 功能(甚至没有提到 C11)。
【讨论】:
【参考方案5】:选择 C++ 控制台,应该没问题。 VS 会倾向于使用 .cpp /etc 扩展名,但你应该能够使用 .c 和 .h 扩展名,
【讨论】:
【参考方案6】:只需使用 c++ 选项。如果您希望使用 .c 扩展名而不是 .cpp,您可以使用,但是普通的旧 c 将在 c++ 项目中编译得很好。
【讨论】:
以上是关于用 Visual Studio 2005 编译 C 程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 2005 中禁止警告 4200?
Visual Studio 中的vc++ 2005创建一个C++的项目,求有多线程的例子!!!