2022年6月15日C++入门教程第五章编译第一个helloworld程序

022年6月15日C++入门教程第五章编译第一个helloworld程序"

在我们编写第一个程序之前,我们需要学习如何在集成开发环境 (IDE) 中创建新程序。在本课中,我们将介绍如何做到这一点,您还将编译和执行您的第一个程序!

项目

要在 IDE 中编写 C++ 程序,我们通常首先创建一个新项目(稍后我们将向您展示如何执行此操作)。项目是一个容器,其中包含您生成可以运行或使用的可执行文件(或库、网站等)所需的所有源代码文件、图像、数据文件等。该项目还保存了各种 IDE、编译器和链接器设置,以及记住您离开的位置,以便您稍后重新打开项目时,可以将 IDE 的状态恢复到您离开的地方。当您选择编译程序时,项目中的所有 .cpp 文件都将被编译和链接。

每个项目对应一个程序。当您准备好创建第二个程序时,您要么需要创建一个新项目,要么覆盖现有项目中的代码(如果您不想保留它)。项目文件通常是特定于 IDE 的,因此为一个 IDE 创建的项目需要在不同的 IDE 中重新创建。

最佳实践

为您编写的每个新程序创建一个新项目。

控制台项目

当您创建一个新项目时,通常会询问您要创建什么类型的项目。我们将在本教程中创建的所有项目都是控制台项目。控制台项目意味着我们将创建可以从 Windows、Linux 或 Mac 控制台运行的程序。

这是 Windows 控制台的屏幕截图:

022年6月15日C++入门教程第五章编译第一个helloworld程序"
2022年6月15日C++教程第五章编译第一个helloworld程序

默认情况下,控制台应用程序没有图形用户界面 (GUI),它们将文本打印到控制台,从键盘读取输入,并编译成独立的可执行文件。这对于学习 C++ 来说是完美的,因为它将复杂性降到最低,并确保事情可以在各种系统上运行。

如果您以前从未使用过控制台,或者不知道如何访问它,请不要担心。我们将通过我们的 IDE 编译和启动我们的程序(必要时会调用控制台)。

工作区/解决方案

当您为程序创建新项目时,许多 IDE 会自动将您的项目添加到“工作区”或“解决方案”(术语因 IDE 而异)。工作区或解决方案是可以容纳一个或多个相关项目的容器。例如,如果您正在编写游戏并希望为单人游戏和多人游戏创建单独的可执行文件,则需要创建两个项目。这两个项目完全独立是没有意义的——毕竟它们是同一个游戏的一部分。大多数情况下,每个都将被配置为单个工作区/解决方案中的单独项目。

尽管您可以将多个项目添加到单个解决方案中,但我们通常建议为每个程序创建一个新的工作区或解决方案,尤其是在学习时。它更简单,出错的可能性更小。

编写你的第一个程序

传统上,程序员用新语言编写的第一个程序是臭名昭著的hello world 程序,我们不会剥夺您的这种体验!你以后会感谢我们的。也许。

在 Visual Studio 2019 中创建项目

022年6月15日C++入门教程第五章编译第一个helloworld程序"
2022年6月15日C++教程第五章编译第一个helloworld程序

运行 Visual Studio 2019 时,您应该会看到如下所示的对话框:

选择创建一个新项目。

然后,您将看到一个如下所示的对话框:

022年6月15日C++入门教程第五章编译第一个helloworld程序"
2022年6月15日C++教程第五章编译第一个helloworld程序

如果您已经打开了之前的项目,您可以通过File menu > New > Project访问此对话框。

选择Windows 桌面向导,然后单击下一步。如果您没有看到这一点,那么您可能在安装 Visual Studio 时忘记选择使用 C++ 工作负载安装桌面开发。在这种情况下,请返回第四章——安装集成开发环境 (IDE)并按照说明重新安装 Visual Studio(注意:您可以运行 Visual Studio 安装程序并修改现有安装以添加C++ 工作负载)。

接下来,您将看到如下所示的对话框:

022年6月15日C++入门教程第五章编译第一个helloworld程序"
2022年6月15日C++教程第五章编译第一个helloworld程序

将现有项目名称替换为HelloWorld.

建议您还检查将解决方案和项目放在同一目录中,因为这会减少每个项目创建的子目录的数量。

单击创建以继续。

最后,您将看到最后一个对话框:

022年6月15日C++入门教程第五章编译第一个helloworld程序"
2022年6月15日C++教程第五章编译第一个helloworld程序

确保应用程序类型设置为控制台应用程序 (.exe)并且未选择预编译头选项。然后单击确定。

您现在已经创建了一个项目!跳到下面的Visual Studio 解决方案资源管理器部分继续。

问:什么是预编译头文件,我们为什么要关闭它们?

在大型项目(具有许多代码文件的项目)中,预编译的头文件可以通过避免一些在大型项目中往往发生的冗余编译来提高编译速度。

但是,预编译的头文件需要额外的工作才能使用,并且对于小型项目(例如您将在我们的教程中创建的项目),编译时间几乎没有差异。

出于这个原因,我们建议最初关闭预编译头文件,并且仅在您发现编译时间受到影响时才启用它们。

在 Visual Studio 2017 或更早版本中创建项目

要在 Visual Studio 2017 或更早版本中创建新项目,请转到文件菜单 > 新建 > 项目。将弹出一个对话框,如下所示:

022年6月15日C++入门教程第五章编译第一个helloworld程序"
2022年6月15日C++教程第五章编译第一个helloworld程序

首先,确保左侧列出了Visual C++ 。如果您没有看到Visual C++ ,那么您可能在安装 Visual Studio 时忘记选择使用 C++ 工作负载安装桌面开发。在这种情况下,请返回第四章——安装集成开发环境 (IDE)并按照说明重新安装 Visual Studio(注意:与其完全重新安装,不如运行 Visual Studio 安装程序并修改现有安装以添加C++ 工作负载)。

如果您使用的是 Visual Studio 2017 v15.3 或更高版本,请在Visual C++下选择Windows 桌面,然后在主窗口中选择Windows 桌面向导。

如果您没有看到Windows 桌面作为选项,您可能使用的是旧版本的 Visual Studio。没关系。相反,在主窗口中选择Win32,然后选择Win32 控制台应用程序。

在下方的名称字段中,输入程序的名称(将现有名称替换为HelloWorld)。在位置字段中,您可以选择为要放置的项目选择不同的位置。现在默认就可以了。

单击确定。如果您使用的是旧版本的 Visual Studio,Win32 应用程序向导将启动。按下一步。

此时,您应该会看到一个如下所示的向导对话框(旧版本的 Visual Studio 使用不同的样式,但具有大部分相同的选项):

022年6月15日C++入门教程第五章编译第一个helloworld程序"
2022年6月15日C++教程第五章编译第一个helloworld程序

确保取消选中Precompiled Header。

然后单击确定或完成。现在您的项目已创建!

Visual Studio 解决方案资源管理器

在窗口的左侧或右侧,您应该会看到一个标题为“解决方案资源管理器”的窗口。在此窗口中,Visual Studio 为您创建了一个解决方案(解决方案'HelloWorld')。其中,名称以粗体显示的是您的新项目 ( HelloWorld )。在项目中,Visual Studio 为您创建了许多文件,包括HelloWorld.cpp(在Source Files树项下)。您可能还会看到其他一些 .cpp 或 .h 文件,您现在可以忽略它们。

022年6月15日C++入门教程第五章编译第一个helloworld程序"
2022年6月15日C++教程第五章编译第一个helloworld程序

在文本编辑器中,您将看到 Visual Studio 已经打开HelloWorld.cpp并为您创建了一些代码。选择并删除所有代码,然后将以下内容键入/复制到您的 IDE 中:

#include <iostream>

int main()
{
	std::cout << "Hello, world!";
	return 0;
}

要编译您的程序,请按F7(如果这不起作用,请尝试Ctrl-Shift-B)或转到Build menu > Build Solution。如果一切,您应该会在“输出”窗口中看到以下内容:

这意味着你的编译成功了!

1>------ Build started: Project: HelloWorld, Configuration: Debug Win32 ------
1>HelloWorld.cpp
1>HelloWorld.vcxproj -> c:usersalexdocumentsvisual studio 2017ProjectsHelloWorldDebugHelloWorld.exe
========== Build: 1 succeeded, 0 failed, 0 up-to-te, 0 skipped ==========

问:我收到错误 C1010(“致命错误 C1010:在查找预编译头文件时意外结束文件。您是否忘记将 '#include "stfx.h"' 添加到源代码中?")。现在怎么办?

创建项目时忘记关闭预编译头文件。重新创建您的项目(按照上面的说明)并确保禁用预编译头文件。

要运行已编译的程序,请按Ctrl-F5,或转到Debug 菜单并选择Start without Debugging。您将看到以下内容:

022年6月15日C++入门教程第五章编译第一个helloworld程序"
2022年6月15日C++教程第五章编译第一个helloworld程序

那是你的程序的结果!恭喜,您已经编译并运行了您的第一个程序!

在 Code::Blocks 中创建项目

要创建一个新项目,请转到文件菜单 > 新建 > 项目。将弹出一个对话框,如下所示:

022年6月15日C++入门教程第五章编译第一个helloworld程序"
2022年6月15日C++教程第五章编译第一个helloworld程序

选择控制台应用程序并按执行(或创建)按钮。

如果您看到控制台应用程序向导对话框,请按Next,确保选择 C++ 并再次按Next。

现在将要求您命名您的项目。为项目命名HelloWorld。您可以将其保存在您希望的任何位置。在 Windows 上,我们建议您将其保存在 C 盘的子目录中,例如C:CBProjects.

022年6月15日C++入门教程第五章编译第一个helloworld程序"
2022年6月15日C++教程第五章编译第一个helloworld程序

您可能会看到另一个对话框,询问您要启用哪些配置。这里的默认值应该没问题,所以选择Finish。

现在您的新项目已经创建。

在屏幕的左侧,您应该会看到一个管理窗口,其中选中了Projects选项卡。在该窗口中,您将看到一个Workspace文件夹,其中包含您的HelloWorld项目:

022年6月15日C++入门教程第五章编译第一个helloworld程序"
2022年6月15日C++教程第五章编译第一个helloworld程序

在HelloWorld项目中,展开Sources文件夹,然后双击“main.cpp”。您会看到已经为您编写了一个 hello world 程序!

将其替换为以下内容:

#include <iostream>

int main()
{
	std::cout << "Hello, world!";
	return 0;
}

要构建您的项目,请按Ctrl-F9,或转到Build 菜单 > Build。如果一切,您应该会在 Build log 窗口中看到以下内容:

-------------- Build: Debug in HelloWorld (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -Wall -fexceptions -g -std=c++14 -c C:CBProjectsHelloWorldmain.cpp -o objDebugmain.o
mingw32-g++.exe -o binDebugHelloWorld.exe objDebugmain.o
Output file is binDebugHelloWorld.exe with size 1.51 MB
Process terminated with status 0 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))

要运行已编译的程序,请按Ctrl-F10,或转到Build menu > Run。您将看到类似于以下内容的内容:

那是你的程序的结果!

对于 Linux 用户

Linux 用户可能需要在 Code::Blocks 编译之前安装额外的包。请参阅第 0.6 课中的 Code::Blocks 安装说明-- 安装集成开发环境 (IDE)了解更多信息。

如果您在命令行上使用 g++

在这种情况下,您不需要创建项目。只需将以下内容粘贴到名为 HelloWorld.cpp 的文本文件中并保存文件:

#include <iostream>

int main()
{
	std::cout << "Hello, world!";
	return 0;
}

在命令行中,键入:

g++ -o HelloWorld HelloWorld.cpp

这将编译并链接 HelloWorld.cpp。要运行它,请键入:

HelloWorld(或可能./HelloWorld),您将看到程序的输出。

如果您使用其他 IDE 或基于 Web 的编译器

您必须自己弄清楚如何执行以下操作:

1.创建控制台项目(仅限 IDE)
2.将 .cpp 文件添加到项目中(仅限 IDE,如果不是为您自动创建的)
3.将以下代码粘贴到文件中:

#include <iostream>

int main()
{
	std::cout << "Hello, world!";
	return 0;
}

4.编译项目
5.运行项目

如果编译失败

没关系,深呼吸。我们可能可以修复它。:)

首先,看一下编译器给你的错误信息。大多数情况下,它将包含一个行号,指示哪一行出错。检查那条线和它周围的线,确保没有错别字或拼写错误。还要确保你的代码中没有包含行号(你的编辑器应该提供这些)。

其次,查看第 0.8 课中的问答——一些常见的 C++ 问题,因为您的问题可能会在其中涉及。

第三,阅读包含您正在编译的示例的课程下方的评论——有人可能遇到了同样的问题并提供了解决方案。

最后,如果以上所有方法都失败了,请尝试在您最喜欢的搜索引擎上搜索您的错误消息。很可能其他人以前遇到过这个问题并想出了如何解决它。

如果您的程序运行但控制台窗口闪烁并立即关闭

运行控制台程序时,控制台窗口将打开,程序的任何输出都将写入控制台窗口。

当程序完成运行后,大多数现代 IDE 将保持控制台打开(直到您按下一个键),以便您可以在继续之前检查程序的结果。但是,一些较旧的 IDE 会在程序完成运行时自动关闭控制台窗口。这通常不是您想要的。

如果您的 IDE 自动关闭控制台窗口,可以使用以下两个步骤来确保控制台在程序结束时暂停。

首先,添加或确保以下行位于程序顶部附近:

#include <iostream>
#include <limits>

其次,在 main() 函数的末尾(就在 return 语句之前)添加以下代码:

这将导致您的程序在继续之前等待用户按 Enter(您可能必须按两次 Enter),这将使您有时间在 IDE 关闭控制台窗口之前检查程序的输出。

std::cin.clear(); // reset any error flags
std::cin.ignore(std::numeric_limits::max(), 'n'); // ignore any characters in the input buffer until we find a newline
std::cin.get(); // get one more char from the user (waits for user to press enter)

其他解决方案(例如通常建议的system("pause")解决方案)可能仅适用于某些操作系统,应避免使用。

如果控制台窗口根本没有打开并且您的程序似乎没有运行,则您的防病毒或反恶意软件也可能会阻止程序的执行。如果是这种情况,请尝试暂时禁用扫描仪并查看问题是否解决。

我的 IDE 中的编译、构建、重建、清理和运行/启动选项有什么区别?

在第 0.5 课- 编译器、链接器和库简介中,我们展示了要生成可以运行的可执行文件,程序中的每个代码文件都被编译成目标文件,然后将目标文件链接成可执行文件.

编译代码文件时,您的 IDE 可能会缓存生成的目标文件。这样,如果以后再次编译程序,任何没有修改过的代码文件都不需要重新编译——上次缓存的目标文件可以被重用。这可以显着加快编译时间(以少量磁盘空间为代价)。

考虑到这一点,以下是每个选项通常的作用:

Build编译项目或工作区/解决方案中所有修改过的代码文件,然后将目标文件链接到可执行文件中。如果自上次构建以来没有修改任何代码文件,则此选项不执行任何操作。
Clean删除所有缓存的对象和可执行文件,因此下次构建项目时,将重新编译所有文件并生成新的可执行文件。
Rebuild执行“清理”,然后执行“构建”。
编译重新编译单个代码文件(不管它之前是否被缓存过)。此选项不会调用链接器或生成可执行文件。
Run/start执行之前构建的可执行文件。一些 IDE(例如 Visual Studio)会在“运行”之前调用“构建”,以确保您运行的是最新版本的代码。否则(例如 Code::Blocks)将只执行先前的可执行文件。
尽管我们非正式地谈论“编译”我们的程序,但要实际编译我们的程序,我们通常会选择 IDE 中的“构建”(或“运行”)选项来执行此操作。

结论

恭喜,您完成了本教程中最难的部分(安装 IDE 并编译您的第一个程序)!

如果您不了解 Hello World 程序中的不同行的作用,请不要担心。我们将在下一章开始详细检查和解释每一行。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:http://www.qince.net/cplusplus-helloworld.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们来信:[email protected],我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2022年6月15日 上午11:52
下一篇 2022年6月15日 下午11:39

猜你喜欢

发表回复

登录后才能评论