C++ 教程:Hello world

原文发表地址:C++ Tutorial: Hello World

原文发表时间:2015/6/17

欢迎来到C++教程。

在第一个C++教程中,您将学习到如何编写(并运行)你的第一个C++程序 “Hello word!”。在学习的路途中您将学习一些C++的历史,请参阅如何在Visual Studio 2017中配置C++控制台应用程序,了解代码结构以及如何构建代码。

致谢

本系列教程是C++:通用语言和库的启动混合版本,由Kate Gregory和James McNellis提供的全天课程并托管在Microsoft虚拟学院上,该内容作为Edx初级中级课程的演变由Gerry O’Brien结合起来,这些课程已经被成千上万的开发人员用来了解更多关于C++的信息.

原始的内容已经适应了文章格式,代码已经迁移到Visual Studio 2017 ,并将利用Visual Studio 2017 中的C++开发人员的好东西。屏幕截图 和其他内容将来自Visual Studio 2017。代码已更改来反应有关正确性,代码的风格或者适当用途的先进的观点。

先决条件

我们有大量的资源提供给初级和有经验的C++开发人员,我们推荐Lippman,Lajoie和Moo的C++ Primer第五版。它使用现代结构而不会重新审视过去更好的旧技术。 访问isocpp.org获取有用的资源列表,最新的C ++新闻,以及互联网上有趣内容的指针。

你不需要C或C++的经验,如果您在长时间休息后返回C++,欢迎回来。

本教程将以实际操作和编码为导向,所以跟上我们的脚步吧! 您可以使用Visual Studio社区,这是一个功能齐全的可扩展的免费IDE用于在Windows,Linux和其他平台的C ++中创建现代应用程序。 您还可以在Visual Studio中使用不同的编译器,如GCC和Clang

C++ 简史

Bjarne Stroustrup设计,C ++已经存在超过三十多年。 类的概念和C语言一样诞生于1979年,它保留了C的向后兼容性并且改进数据抽象和支持面向对象编程和通用编程。

C和C ++是受欢迎的因为它们是便携式的可以在不同的编译器或不同的计算机硬件操作系统,CPU架构或设备形式因素的情况下进行编译,而不会发生重大变化。 每个平台或操作系统可能具有不同的提供程序可用的编译器,如Microsoft,Intel或开源社区。

C ++不断发展以适应现代开发人员的需求。 C ++存在于标准委员会的管理下,并于1998年成为国际标准,并在2011年,2014年和2017年进行了修订。它继续进行更新并作为标准委员会工作的一部分。

C++已被用于成千上万的应用程序,如今你也许已经通过很多形式使用它!

创建一个空的控制台工程

学习C ++时遇到的大部分代码都可以在控制台窗口通过使用简单的文本输入和直接的文本输出来运行。 这些教程将使用配置为空的控制台应用程序。 您可以添加新的源文件和代码并在命令行中查看结果。

下面是在Visual Studio 2017中创建空控制台项目的方法:

  1. 启动Visual Studio 2017。
  2. 在菜单栏中 ,选择文件,新建,项目。
  3. Visual C ++ 类别中,选择Empty Project,然后命名项目。 选择一个名称提供一些内容的指示 - 例如, “HelloWorld”的教程或“GuessTheNumber”数字猜测应用程序的。
  4. 解决方案资源管理器中,右键单击“源文件”,然后选择添加新建项目
  5. 添加新项目中,选择C ++文件(.cpp) 然后命名文件。此外名称应该反映文件内容。 例如,“HelloWorld”教程代码或“WidgetClass”Widget实现。 单击添加
  6. 你现在有了一个为编码教程或C/C++编码的空工程。如果您想要构建基础模板代码并适合实验,请将以下代码复制到新的C ++文件中,然后按CTRL-F5构建并运行。

int main()
{
return 0;
}

这个代码只不过是一个空壳,为你的 C++探索而准备。

随着你成为C++专家并且在编写真正的C++工程你将毫无疑问的探索其他类型的应用程序。

Hello world!

传统C++演示的时间,“Hello world!”,历史对于C++的典型样本起源有一点不清楚,但也许可以追溯到Kernighan和Ritchie

创建Hello world!应用程序:

  1. 创建一个空的控制台项目[link:创建一个空的控制台项目]并将其命名为“HelloWorld”; 并使用cpp源文件名称。
  2. 在空的“HelloWorld.cpp”文件中,输入以下代码:#include <iostream>
    int main()
    {
    std::cout << "Hello, World!" << std::endl;
    return 0;
    }
  3. CTRL-F5运行程序。 当您被询问是否要构建它时,单击。 这是您第一次运行该程序,因此Visual Studio需要构建它。
  4. 你看到它运行了吗 ? 如果您在像Visual Studio这样的IDE中运行,输出窗口可能会关闭,然后才能看到问候语。

   你可以做一些事来解决这个问题

   您可以从命令行运行程序。 在Windows中,启动命令提示符的实例,进入到项目的调试目录,然后键入helloworld。 此截图显示目录中的文件以及程序输出:

你也可以添加代码来实现等待你按任意键退出主程序在return 0之前添加以下语句:

std::cin.ignore();

CTRL-F5重新运行程序。按一个键来结束程序。

恭喜您的第一个C ++程序。 我们仔细看看。 行号已被添加作为参考而不是程序代码的一部分。

1 #include <iostream>
2
3 int main()
4 {
5   std::cout << "Hello World!" << std::endl;
6   return 0;
7 }

第1行:这被称为预处理器指令。 它指示编译器找到包含名为iostream的库的代码的文件。 该库包含允许输入和输出流的代码,如控制台窗口。

第3行:每个C ++程序必须有一个称为main()的函数。 当您在计算机上开始执行程序时它被称为应用程序的入口点。 int部分是方法的返回类型。 名称后面的空括号()表示这是一个函数它没有参数,换句话说,没有用于传递值的参数。 您将在以后了解有关变量类型,返回值和参数的更多信息。

第4行:C ++中的函数体以开放的大括号开头。

第5行:该代码使用cout(发音为“see out”)将文本“Hello World!”和换行符/直接地(endl)发送到控制台进行输出和显示。 这两个命令的std ::前缀是指示它们是名为std的命名空间的一部分的一种方式。::用于表示cout和endl是std命名空间的一部分。 [琐事提醒! cout看起来像是一种方法,但实际上还有更多的事情发生在幕后。 但这不是你作为初学者担心的事情。]

还要注意,该行以分号结尾。 C ++语句以分号终止。

第6行:当一个值预期发送回一个调用者时return语句用于结束一个函数。 在这种情况下,调用者是操作系统返回值为整数值0。如果程序达到此语句,返回值为0表示操作系统代码执行成功。 程序员返回0以指示执行成功和非零值以指示程序在某处出现错误。

第7行:这行关闭了main()函数的主体并且是必要的因此编译器知道函数或方法在哪里结束,但也用于其他目的将在以后的变量作用域和可见性范围内进行介绍。

有更复杂的应用程序,但是关于C ++的很酷的东西是您学习编写一个控制台应用程序的语法和库的每一个小块,您可以使用它来编写任何其他类型的应用程序。

如何构建代码

构建C ++代码时,会发生三大事情:预处理,编译和链接。

首先,一个名为预处理器的工具会经过你的代码并对其进行一些操作。 预处理器的输出转到编译器。

编译器确保您已经正确地使用了支持库和C ++语言本身的语法。 标点符号,变量定义和其他语法元素都必须遵守标准。 Real C ++应用程序可以拥有大量文件,甚至可能有数千个文件,每个文件必须单独编译,编译的输出被称为对象文件。

每个源文件被编译完成后,链接器将对象文件一起链接到由计算机处理器执行的应用程序中。 链接器确保您在代码中做出的任何承诺都被保留。 例如,在Hello,World中,std :: cout在别处定义。 当链接器拉入iostream库时链接器必须解析该调用。

这些步骤对于了解当您收到错误消息时会发生什么是至关重要的。 错误消息可以在它们滚动到更大的问题之前指出小问题, 错误消息还可以帮助确定错误是编译器还是链接器错误 - 或其他问题。 阅读错误信息对于解决问题至关重要!

综述

在这本C ++教程中,您创建了一个Visual Studio C ++控制台项目,并创建了您的第一个C ++程序Hello World。 一路走来,您学习了如何构建C ++代码(预处理器,编译,链接)C ++应用程序的基本结构以及一些C ++历史记录。

如果您对我们有任何建议或反馈,请联系。我们可以同过下面的评论,通过电子邮件(ebattali@microsoft.comvisualcpp@microsoft.com )您可以通过帮助>产品中的报告问题或通过开发者社区提供反馈。 你也可以在Twitter(@VisualC)和Facebook(msftvisualcpp)上找到我们。

感谢kate Gregory-合伙人; Gregory 咨询有限公司和James McNellis -微软高级软件开发工程师,允许我们利用他们的一些视频讲座,演示和内容。 还要感谢微软学习经历Gerry O'Brien的课程设计和帮助。