0.7--编译你的第一个程序[译]
原文:0.7--编译你的第一个程序 作者:Alex
在编写第一个程序之前,我们需要学习如何在集成开发环境 (IDE) 中创建新程序。在本节课程中,我们将介绍如何做到这一点,您还将编译并执行您的第一个程序!
项目
要在 IDE 中编写 C++ 程序,我们通常首先创建一个新项目(稍后我们将向您展示如何执行此操作)。项目是一个容器,其中包含生成可以运行或使用的可执行文件(或库、网站等)所需的所有源代码文件、图像、数据文件等。该项目还保存各种 IDE、编译器和链接器设置,并记住您离开的位置,以便稍后重新打开项目时,IDE 的状态可以恢复到您离开的位置。当您选择编译程序时,项目中的所有 .cpp 文件都将被编译和链接。
每个项目对应一个程序。当您准备好创建第二个程序时,您需要创建一个新项目,或者覆盖现有项目中的代码(如果您不想保留它)。项目文件通常是特定于 IDE 的,因此为一个 IDE 创建的项目需要在不同的 IDE 中重新创建。
最佳做法
为您编写的每个新程序创建一个新项目。
控制台项目
当您创建新项目时,通常会询问您要创建什么类型的项目。我们将在本教程中创建的所有项目都将是控制台项目。控制台项目意味着我们将创建可以从 Windows、Linux 或 Mac 控制台运行的程序。
这是 Windows 控制台的屏幕截图:

默认情况下,控制台应用程序没有图形用户界面 (GUI),它们将文本打印到控制台,从键盘读取输入,并编译成独立的可执行文件。这非常适合学习 C++,因为它将复杂性降至最低,并确保可以在各种系统上运行。
如果您以前从未使用过控制台,或者不知道如何访问它,请不要担心。我们将通过 IDE 编译并启动程序(必要时将调用控制台)。
工作空间/解决方案
当您为程序创建新项目时,许多 IDE 会自动将您的项目添加到“工作区”或“解决方案”(该术语因 IDE 而异)。工作区或解决方案是一种可以容纳一个或多个相关项目的容器。例如,如果您正在编写游戏并希望为单人游戏和多人游戏提供单独的可执行文件,则需要创建两个项目。这两个项目完全独立是没有意义的——毕竟,它们是同一个游戏的一部分。最有可能的是,每个项目都将配置为单个工作区/解决方案中的单独项目。
尽管您可以将多个项目添加到单个解决方案中,但我们通常建议为每个程序创建一个新的工作区或解决方案,尤其是在学习时。它更简单,出错的可能性也更小。
编写你的第一个程序
传统上,程序员用新语言编写的第一个程序是臭名昭著的 hello world 程序,我们不会剥夺您的这种体验!稍后你会感谢我们的。或许。
在 Visual Studio 2019(或更高版本)中创建项目
运行 Visual Studio 2019(或更高版本)时,您应该看到一个如下所示的对话框:

选择创建新项目。
然后您将看到一个如下所示的对话框:

如果您已经打开了以前的项目,则可以通过“文件”菜单 >“新建”>“项目”访问此对话框。
选择“Windows 桌面向导”并单击“下一步”。如果您没有看到这一点,那么您可能在安装 Visual Studio 时忘记选择安装使用 C++ 工作负载的桌面开发。在这种情况下,请返回第 0.6 课 — 安装集成开发环境 (IDE) 并按照指示重新安装 Visual Studio(注意:您可以运行 Visual Studio 安装程序并修改现有安装以添加C++ 工作负载)。
接下来,您将看到一个如下所示的对话框:

将现有项目名称替换为 HelloWorld 。
建议您还应该检查解决方案和项目是否放在同一目录中,因为这会减少每个项目创建的子目录的数量。
单击“创建”继续。
最后,您将看到最后一个对话框:

确保应用程序类型设置为控制台应用程序 (.exe),并且未选择预编译头选项。然后单击“确定”。
您现在已经创建了一个项目!跳至下面的 Visual Studio 解决方案资源管理器部分继续。
Visual Studio 解决方案资源管理器
在窗口的左侧或右侧,您应该看到一个标题为“解决方案资源管理器”的窗口。在此窗口中,Visual Studio 已为您创建了一个解决方案(解决方案“HelloWorld”)。其中,名称以粗体显示的是您的新项目 (HelloWorld)。在该项目中,Visual Studio 已为您创建了许多文件,包括 HelloWorld.cpp(位于“源文件”树项下)。您可能还会看到一些其他 .cpp 或 .h 文件,您现在可以忽略它们。

在文本编辑器中,您将看到 Visual Studio 已打开 HelloWorld.cpp 并为您创建了一些代码。选择并删除所有代码,然后将以下内容键入/复制到您的 IDE 中:
#include <iostream>
int main()
{
std::cout << "Hello, world!";
return 0;
}
要编译程序,请按 F7(如果这不起作用,请尝试 Ctrl-Shift-B)或转到“生成”菜单 >“生成解决方案”。如果一切顺利,您应该会在“输出”窗口中看到以下内容:
1>------ Build started: Project: HelloWorld, Configuration: Debug Win32 ------
1>HelloWorld.cpp
1>HelloWorld.vcxproj -> c:\users\alex\documents\visual studio 2017\Projects\HelloWorld\Debug\HelloWorld.exe
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
这说明你的编译成功了!
要运行已编译的程序,请按 Ctrl-F5,或转到“调试”菜单并选择“启动但不调试”。您将看到类似以下内容:

这就是你的程序的结果!恭喜,您已经成功编译并运行了您的第一个程序!
在 Code::Blocks 中创建项目
要创建新项目,请转到“文件”菜单 >“新建”>“项目”。将弹出一个对话框,如下所示:

选择控制台应用程序并按执行(或创建)按钮。
如果您看到控制台应用程序向导对话框,请按“下一步”,确保选择了“C++”,然后再次按“下一步”。
现在您将被要求命名您的项目。将项目命名为 HelloWorld 。您可以将其保存在任何您想要的地方。在Windows上,我们建议您将其保存在C盘的子目录中,例如 C:\CBProjects 。

您可能会看到另一个对话框,询问您要启用哪些配置。此处的默认值应该没问题,因此选择“完成”。
现在您的新项目已创建。
在屏幕左侧,您应该会看到一个管理窗口,其中选择了“项目”选项卡。在该窗口中,您将看到一个 Workspace 文件夹,其中包含您的 HelloWorld 项目:

在 HelloWorld 项目中,展开 Sources 文件夹,然后双击“main.cpp”。你会看到一个hello world程序已经为你编写好了!
将其替换为以下内容:
#include <iostream>
int main()
{
std::cout << "Hello, world!";
return 0;
}
要构建项目,请按 Ctrl-F9,或转到“构建”菜单 >“构建”。如果一切顺利,您应该会在“构建日志”窗口中看到以下内容:
-------------- Build: Debug in HelloWorld (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -Wall -fexceptions -g -std=c++14 -c C:\CBProjects\HelloWorld\main.cpp -o obj\Debug\main.o
mingw32-g++.exe -o bin\Debug\HelloWorld.exe obj\Debug\main.o
Output file is bin\Debug\HelloWorld.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,或转到“构建”菜单 >“运行”。您将看到类似于以下内容的内容:

这就是你的程序的结果!
对于Linux用户
Linux 用户可能需要在 Code::Blocks 编译之前安装其他软件包。请参阅第 0.6 课——安装集成开发环境 (IDE) 中的 Code::Blocks 安装说明以获取更多信息。
在 VS Code 中创建项目
要启动新项目,请转到“视图”>“资源管理器”菜单(或按 Ctrl-Shift-E)。这将打开资源管理器窗格。如果您之前没有打开过项目,您应该在资源管理器窗格中看到一个“打开文件夹”按钮 - 按下它。如果已经有一个打开的项目并且您想要开始一个新项目,请从顶部导航栏中选择“文件”>“打开文件夹”。
在打开的对话框中,创建一个名为 HelloWorld 的新文件夹,然后选择该文件夹。该文件夹将是您的项目文件夹。
接下来,我们需要创建包含源代码的文件。从顶部导航栏中选择“文件”>“新建文件”,或单击资源管理器窗格中 HELLOWORLD 右侧的“新建文件”图标。
将文件命名为 main.cpp 并向其中添加以下内容:
#include <iostream>
int main()
{
std::cout << "Hello, world!";
return 0;
}
要编译 main.cpp 并运行程序,请确保 main.cpp 在主窗格中打开,然后从顶部导航栏中选择 Run > Run Without Debugging,或者单击右侧播放图标右侧的 v main.cpp 选项卡并选择运行 C/C++ 文件。
接下来,选择 g++ 构建和调试活动文件选项(macOS 用户应选择 clang++ 而不是 g++)。将选项卡从窗口底部的“调试控制台”切换到“终端”。
如果终端包含文本“Hello, world!”,那么恭喜您,您刚刚运行了第一个 C++ 程序!
如果您在命令行上使用 g++
在这种情况下,您不需要创建项目。只需将以下内容粘贴到名为 HelloWorld.cpp 的文本文件中并保存文件:
#include <iostream>
int main()
{
std::cout << "Hello, world!";
return 0;
}
从命令行输入:
g++ -o HelloWorld HelloWorld.cpp
这将编译并链接 HelloWorld.cpp。要运行它,请输入:
HelloWorld (或者可能是 ./HelloWorld ),您将看到程序的输出。
如果您使用其他 IDE 或基于 Web 的编译器
您必须自己弄清楚如何执行以下操作:
- 创建控制台项目(仅限 IDE)
- 将 .cpp 文件添加到项目中(仅限 IDE,如果没有为您自动创建)
- 将以下代码粘贴到文件中:
#include <iostream> int main() { std::cout << "Hello, world!"; return 0; } - 编译项目
- 运行项目
如果编译失败
没关系,深呼吸。我们也许可以修复它。 :)
首先,查看编译器给您的错误消息。大多数情况下,它会包含一个行号,指示哪一行有错误。检查该行及其周围的行,并确保没有拼写错误或拼写错误。还要确保您的代码中没有包含行号(您的编辑器应该提供这些行号)。
其次,看第 0.8 课中的问答——一些常见的 C++ 问题,因为那里可能涵盖了您的问题。
第三,阅读包含您正在编译的示例的课程下面的评论——有人可能遇到了同样的问题并提供了解决方案。
最后,如果上述所有方法均失败,请尝试在您最喜欢的搜索引擎上搜索错误消息。很可能其他人以前也遇到过这个问题并找到了解决方法。
如果您的程序运行但控制台窗口闪烁并立即关闭
当控制台程序运行时,控制台窗口将打开,程序的任何输出都将写入控制台窗口。
当程序完成运行时,大多数现代 IDE 都会保持控制台打开(直到您按下某个键),以便您可以在继续之前检查程序的结果。然而,一些较旧的 IDE 会在程序运行完毕后自动关闭控制台窗口。这通常不是您想要的。
如果您的 IDE 自动关闭控制台窗口,可以使用以下两个步骤来确保控制台在程序结束时暂停。
首先,添加或确保以下行位于程序顶部附近:
#include <iostream>
#include <limits>
其次,在 main() 函数的末尾(就在 return 语句之前)添加以下代码:
std::cin.clear(); // 重置任何错误标志
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 忽略输入缓冲区中的任何字符,直到找到换行符
std::cin.get(); // 从用户处再获取一个字符(等待用户按enter键)
这将导致您的程序在继续之前等待用户按 Enter 键(您可能必须按 Enter 键两次),这将使您有时间在 IDE 关闭控制台窗口之前检查程序的输出。
其他解决方案(例如通常建议的 system("pause") 解决方案)可能仅适用于某些操作系统,应避免使用。
如果控制台窗口根本没有打开,并且您的程序似乎没有运行,则您的防病毒软件或反恶意软件也可能会阻止程序的执行。如果是这种情况,请尝试暂时禁用扫描仪并查看问题是否解决,或者从扫描中排除项目目录。
我的 IDE 中的编译、构建、重建、清理和运行/启动选项之间有什么区别?
在第 0.5 课——编译器、链接器和库简介中,我们展示了要生成可以运行的可执行文件,程序中的每个代码文件都会编译为目标文件,然后将目标文件链接为可执行文件。
编译代码文件时,您的 IDE 可能会缓存生成的目标文件。这样,如果将来再次编译程序,任何未修改的代码文件都不需要重新编译——可以重用上次缓存的目标文件。这可以显着加快编译时间(以一点磁盘空间为代价)。
考虑到这一点,每个选项通常的作用如下:
- 构建 编译项目或工作区/解决方案中所有修改的代码文件,然后将目标文件链接到可执行文件。如果自上次构建以来没有修改任何代码文件,则此选项不会执行任何操作。
- Clean 会删除所有缓存的对象和可执行文件,因此下次构建项目时,所有文件都将重新编译并生成新的可执行文件。
- 重建 先进行“清理”,然后进行“构建”。
- 编译 重新编译单个代码文件(无论之前是否已缓存)。此选项不会调用链接器或生成可执行文件。
- 运行/启动 执行先前构建的可执行文件。某些 IDE(例如 Visual Studio)会在执行“运行”之前调用“构建”,以确保您运行的是最新版本的代码。否则(例如 Code::Blocks)将只执行先前的可执行文件。
尽管我们非正式地谈论“编译”我们的程序,但要实际编译我们的程序,我们通常会在 IDE 中选择“构建”(或“运行”)选项来执行此操作。
浙公网安备 33010602011771号