0.7 - 编译你的第一个程序
亚历克斯于2007年5月28日| 最后由ALEX于2019年1月31日修改
在我们编写第一个程序之前,我们需要学习如何在集成开发环境(IDE)中创建新程序。在本课中,我们将介绍如何执行此操作,您还将编译并执行您的第一个程序!
项目
要在IDE中编写C ++程序,我们通常首先创建一个新项目(我们将向您展示如何执行此操作)。一个项目是保存所有源代码文件,图像,数据文件等......这都需要产生一个可执行文件(或库,网站,等...),你可以运行或使用的容器。该项目还保存了各种IDE,编译器和链接器设置,以及记住您中断的位置,以便以后重新打开项目时,IDE的状态可以恢复到您停止的任何位置。当您选择编译程序时,项目中的所有.cpp文件都将被编译和链接。
每个项目对应一个程序。当您准备创建第二个程序时,您需要创建一个新项目,或者覆盖现有项目中的代码(如果您不想保留它)。项目文件通常是特定于IDE的,因此需要在不同的IDE中重新创建为一个IDE创建的项目。
最佳实践
为您编写的每个新程序创建一个新项目。
控制台项目
创建新项目时,通常会询问您要创建的项目类型。我们将在本教程中创建的所有项目都是控制台项目。一个控制台项目意味着我们要创建一个可以从Windows,Linux或Mac控制台运行的程序。
这是Windows控制台的屏幕截图:
默认情况下,控制台应用程序没有图形用户界面(GUI),向显示器打印文本,从键盘读取输入,并编译为独立的可执行文件。这非常适合学习C ++,因为它可以将复杂性降至最低,并确保事物适用于各种系统。
如果您以前从未使用过控制台,或者不知道如何访问控制台,请不要担心。我们将通过IDE(将在必要时调用控制台)编译和启动我们的程序。
工作区/解决方案
为程序创建新项目时,许多IDE会自动将项目添加到“工作区”或“解决方案”(该术语因IDE而异)。工作空间或解决方案是可以容纳一个或多个相关项目的容器。例如,如果您正在编写游戏并希望为单个玩家和多人游戏分别拥有可执行文件,则需要创建两个项目。这两个项目完全独立是没有意义的 - 毕竟,它们是同一个游戏的一部分。最有可能的是,每个都将被配置为单个工作区/解决方案中的单独项目。
虽然您可以将多个项目添加到单个解决方案中,但我们通常建议为每个程序创建新的工作区或解决方案,尤其是在学习时。它更简单,出错的可能性更小。
写你的第一个程序
传统上,第一个程序员用新语言编写的是臭名昭着的hello world程序,我们不会剥夺你的经验!你以后会感谢我们。也许。
警告
从本课开始,您将看到许多C ++代码示例。大多数这些示例看起来像这样:
1 2 3 4 5 6 7 | #include <iostream>
int main() { std::cout << "Hello, world!"; return 0; } |
如果您使用鼠标从这些示例中选择代码,然后将其复制/粘贴到IDE中,您也可以获取行号(取决于您的选择方式)。如果是这样,您需要在编译之前手动删除行号。
在Visual Studio中创建项目
要在Visual Studio中创建新项目,请转到“ 文件”菜单>“新建”>“项目”。将弹出一个对话框,如下所示:
首先,确保左侧列出了Visual C ++。如果您没有看到Visual C ++,那么您可能忘记在安装Visual Studio时选择使用C ++工作负载安装Desktop开发。在这种情况下,请返回第0.6课- 安装集成开发环境(IDE)并按指示重新安装Visual Studio。
如果您使用的是Visual Studio 2017 v15.3或更高版本,请在Visual C ++下,选择Windows桌面,然后在主窗口中选择Windows桌面向导。
如果您没有看到Windows桌面作为选项,则可能使用的是旧版本的Visual Studio。没关系。而是在主窗口中选择Win32,然后选择Win32 控制台应用程序。
在下面的名称字段中,输入程序的名称(用现有名称替换HelloWorld
)。在“位置”字段中,您可以选择为项目选择其他位置。现在默认是好的。
单击确定。如果您使用的是旧版Visual Studio,则会启动Win32应用程序向导。按Next。
此时,您应该看到一个类似于此的向导对话框(旧版本的Visual Studio使用不同的样式,但具有大多数相同的选项):
确保取消选中预编译标题。
然后单击确定或完成。现在你的项目已经创建了!
在左侧,您应该看到一个标题为Solution Explorer的窗口。在这个窗口中,Visual Studio为您创建了一个解决方案(解决方案'HelloWorld')。在其中,名称以粗体显示,是您的新项目(HelloWorld)。在项目中,Visual Studio为您创建了许多文件,包括HelloWorld.cpp(在Source Files树项下面)。您可能还会看到其他一些.cpp或.h文件,您现在可以忽略这些文件。
在文本编辑器中,您将看到Visual Studio已经打开了HelloWorld.cpp并为您创建了一些代码。选择并删除所有代码,然后在编译器中键入/复制以下内容:
1 2 3 4 5 6 7 | #include <iostream>
int main() { std::cout << "Hello, world!"; return 0; } |
要编译程序,请按F7(如果这不起作用,请尝试Ctrl-Shift-B)或转到Build菜单> Build Solution。如果一切顺利,您应该会在“输出”窗口中看到以下内容:
1> ------ Build build:项目:HelloWorld,配置:调试Win32 ------
1> HelloWorld.cpp
1> HelloWorld.vcxproj - > c:\ users \ alex \ documents \ visual studio 2017 \ Projects \ HelloWorld \ Debug \ HelloWorld.exe
==========构建:1成功,0失败,0最新,0跳过==========
这意味着您的编译成功!
问:我收到错误C1010(“致命错误C1010:在查找预编译头文件时意外结束文件。您是否忘记将”#include“stdafx.h”添加到源代码中?“)。现在怎么办?
您在创建项目时忘记关闭预编译的标题。重新创建项目(按照上面的说明)并确保禁用预编译的标头。
要运行已编译的程序,请按ctrl-F5,或转到Debug菜单并选择Start Without Debugging。您将看到以下内容:
这是你的计划的结果!恭喜,您编译并运行了第一个程序!
在Code :: Blocks中创建项目
要创建新项目,请转到“ 文件”菜单>“新建”>“项目”。将弹出一个如下所示的对话框:
选择控制台应用程序,然后按“执行”(或“创建”)按钮
如果看到控制台应用程序向导对话框,请按“ 下一步”,确保选中“C ++”并再次按“ 下一步”。
现在,您将被要求为您的项目命名。标题项目HelloWorld
。您可以将它保存在任何您希望的位置,但我们建议您将其保存在C驱动器的子目录中,例如C:\CBProjects
。
您可能会看到另一个对话框,询问您要启用哪些配置。这里的默认值应该没问题,因此选择Finish。
现在您的新项目已经创建。
在屏幕的左侧,您应该看到一个管理窗口,其中选择了“项目”选项卡。在该窗口中,您将看到一个Workspace文件夹,其中包含您的HelloWorld项目:
在HelloWorld项目中,展开Sources文件夹,然后双击“main.cpp”。您将看到已经为您编写了一个hello world程序!
用以下内容替换它:
1 2 3 4 5 6 7 | #include <iostream>
int main() { std::cout << "Hello, world!"; return 0; } |
要构建项目,请按ctrl-F9,或转到“ 构建”菜单>“构建”。如果一切顺利,您应该会在Build log窗口中看到以下内容:
-------------- Build:在HelloWorld中调试(编译器:GNU GCC编译器)---------------
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
输出文件是bin \ Debug \ HelloWorld.exe,大小为1.51 MB
进程终止,状态为0(0分钟,0秒(秒))
0个错误,0个警告(0分钟,0秒(s))
这意味着您的编译成功!
要运行已编译的程序,请按ctrl-F10,或转到“ 生成”菜单>“运行”。您将看到类似于以下内容的内容:
这是你的计划的结果!
对于Linux用户
Linux用户可能需要在Code :: Blocks编译之前安装其他软件包。有关详细信息,请参阅第0.6课- 安装集成开发环境(IDE)中的Code :: Blocks安装说明。
如果你在命令行上使用g ++
在这种情况下,您不需要创建项目。只需将以下内容粘贴到名为HelloWorld.cpp的文本文件中并保存文件即可:
1 2 3 4 5 6 7 | #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)将以下代码粘贴到文件中:
1 2 3 4 5 6 7 | #include <iostream>
int main() { std::cout << "Hello, world!"; return 0; } |
4)编译项目
5)运行项目
如果编译失败
没关系,深吸一口气。我们可以解决它。:)
首先,查看编译器给出的错误消息。通常,它将包含一个行号,表明哪一行出错。检查该行及其周围的行,并确保没有拼写错误或拼写错误。另外,请确保您的代码中不包含行号。
其次,请看第0.8课中的问答- 一些常见的C ++问题,因为您的问题可能会在那里讨论。
第三,阅读下面的评论 - 有人可能遇到过同样的问题。
最后,如果上述所有操作都失败,请尝试在Google上搜索您的错误消息。很可能其他人之前遇到过此问题,并想出如何修复它。
如果您的程序运行但窗口会立即闪烁并关闭
程序执行完毕后,某些编译器(如Bloodshed的Dev C ++)不会自动暂停控制台屏幕。您的程序正在运行,但输出窗口正在关闭,您可以查看结果。
如果您的编译器就是这种情况,以下两个步骤将解决您的问题:
首先,添加或确保以下行靠近程序顶部(Visual Studio用户,确保这些行出现在#include“pch.h”或#include“stdafx.h”之后,如果存在的话):
1 2 | #include <iostream> #include <limits> |
其次,在main()函数的末尾添加以下代码(在return语句之前):
1 2 3 | std::cin.clear(); // reset any error flags std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // ignore any characters in the input buffer until we find an enter character std::cin.get(); // get one more char from the user |
这将导致程序在继续之前等待用户按下某个键,这将使您有时间在编译器关闭控制台窗口之前检查程序的输出。
其他解决方案,例如通常建议的system("pause")
解决方案,可能只适用于某些操作系统,应该避免使用。
您的防病毒或反恶意软件也可能阻止程序的执行。如果是这种情况,请尝试暂时禁用扫描仪并查看问题是否已解决。
对于Visual Studio用户
如果通过调试(Debug Menu> Start Debugging)运行, Visual Studio将不会在控制台应用程序的末尾暂停。如果您希望它暂停,您可以使用上面的代码解决方案,也可以在不调试的情况下运行程序(Debug Menu> Start Without Debugging)。
结论
恭喜,您完成了本教程中最难的部分(安装IDE并编译您的第一个程序)!
如果您不理解Hello World程序中的所有不同行,请不要担心。我们将在下一章开头详细介绍和解释每一行。
转载自:https://www.learncpp.com/cpp-tutorial/writing-your-first-program/