我可以在Visual Studio 2012中编译和调试(运行)单个c++文件吗?(如何避免创建太多项目)

Can I compile and debug (run) a single C++ file in Visual Studio 2012? (How to avoid creating too many projects)

本文关键字:文件 c++ 项目 太多 创建 何避免 单个 运行 Studio Visual 2012      更新时间:2023-10-16

我正在从一本书中学习c++并使用Visual Studio 2012。为了遵循本书的练习,我需要创建多个.cpp文件,其中包含main()函数。是否有任何方法我可以编译/调试我的程序,而不必每次都做一个新项目?

例如,如果我写了一个简单的"Hello, World!"文件,然后决定做一些非常简单的东西,我能避免为每个简单的程序创建一个新的项目吗?是否有任何方法使用Visual Studio 2012只是作为编译器?如果我能把所有的东西都放在一个单独的项目中,我可以编译任何我想要的单独的文件,并看到它运行,我会很高兴的。

谢谢你的帮助。

虽然现在添加这个答案已经太晚了,但它可能对未来的观众有用。这是我所做的-

当我试图弄清楚如何使用Visual Studio来实现您所问的相同目的时,我观察并发现,对于一个c++项目,应该只有一个起点,即只有一个main()函数。

因此,不必每次都创建一个新项目,只需将未使用的c++文件中的(main())函数的名称更改为其他,如文件名或其他内容。


例如,我首先用main()函数创建了我的第一个程序hello_world.cpp,然后编译它,运行它&我学到了我能用它学到的一切。

但是现在我想创建一个新文件来尝试一些其他的新东西(一个新的文件learn_operators.cpp与自己的main()函数)。

所以,在编译&运行learn_operators.cpp,我会将hello_world.cpp中的main()的名称更改为,例如hello_world(),然后构建&以与以前相同的方式运行项目,但这一次只有这个新文件将运行,因为这是项目的(新)起点(也就是说,它包含main()函数)。

希望这对你有所帮助&如果我错了,请指正。


Update:另一种方法是在main()中保留一个文件,为其他项目代码创建类,包括添加到项目中的任何新文件/代码,然后从main()调用这些类。这样,除了main()之外的任何代码都被包装在类中,并且每次必须调用新代码时,只有main()中的代码会发生一点变化,而不是将函数重命名为main()

    右键单击文件。
  1. 转到不想运行的特定文件的属性。
  2. 在"配置属性"中选择"常规"。
  3. 设置"排除构建"为YES。
  4. 单击Apply。
  5. 然后加载Windows调试器。

你设置!

编译只需创建一个cpp文件。并使用cl命令行工具,检查MSDN链接:从命令行编译本地c++程序它有一个示例cl /EHsc simple.cpp

您也可以使用条件编译来解决这个问题。但是我真的建议你努力为每个程序创建一个新项目。

header.h

#include<iostream>
#define __HelloWorld__

HelloWorld.cpp

#include"header.h"
#ifdef __HelloWorld__
int main() {
    std::cout << "Hello World" << std::endl;
}
#endif

program2.cpp

#include"header.h"
#ifdef __program2__
int main() {
    std::cout << "Program 2" << std::endl;
}
#endif

现在你可以通过#define选择你想要运行的程序

您可以将所有cpp文件添加到具有不同文件名的同一项目中,然后您可以右键单击每个文件并排除您不想要构建的文件。

每个应用程序都有一个项目要好得多。

或者你可以有一个单独的主文件,调用你在其他文件中的其他函数,在那里你实现你的练习,然后你不需要处理任何事情,只是在一个新的文件中实现新的练习,并从main调用它。

如果您在右边的项目浏览器窗口中右键单击解决方案名称,您应该能够在现有的项目下添加项目。然而,每次练习都开始一个新项目要好得多。

我只能找到Visual Studio 2019的解决方案,所以它可能无法在VS 2012中工作。您可以转到解决方案资源管理器,删除所有其他文件(只是删除,而不是删除),然后添加新文件。然后你就可以编译它了