我可以在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++并使用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()
。
- 右键单击文件。
- 转到不想运行的特定文件的属性。
- 在"配置属性"中选择"常规"。
- 设置"排除构建"为YES。
- 单击Apply。
- 然后加载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中工作。您可以转到解决方案资源管理器,删除所有其他文件(只是删除,而不是删除),然后添加新文件。然后你就可以编译它了
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 如何将内容数组写入文本文件?
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到