0.6编译你的第一个程序

在写第一个程序之前,我们先来大致了解一下开发环境。

第一点,我们需要知道,程序是写在.cpp文件中的,而.cpp文件需要被添加到项目(project)中,project保存了所有需要编译的文件名和IDE的各种设置。每次重新打开项目,IDE都会恢复到你上一次离开时的状态。当我们选择编译程序时,项目就会告诉编译器和连接器哪些文件需要编译和连接。值得注意的是一个IDE中的项目文件是不能在另一个IDE中工作的,如果需要在另一个IDE上工作,你需要重新创建一个项目或者用它覆盖一个旧项目。

第二点,项目有多种类型。每次创建新项目时,都需要选择一个项目类型,本教程中的所有项目都是控制台项目(console project),这意味着程序可以从DOS或者Linux的命令行运行。控制台程序默认是没有图形用户界面的(GUI,graphical user interface)并会被编译成独立的可执行文件。这对学习C++是十分有益的,因为这将其复杂性降到最低。

第三点,当你为程序创建一个新项目时,许多IDE都会自动把项目添加到“workspace”(工作空间)或“solution”(解决方案)中。工作空间或解决方案是一个可以容纳一个或多个相关项目的容器,尽管可以向一个单一解决方案中添加多个项目,我们还是建议您为每个项目创建新的工作空间/解决方案,这样更简单并能减少出错的几率。

按照传统经验,每个程序员用一种新的语言写的第一个程序都是臭名昭著的“hello world”程序,我们也不会打破这个传统,也许以后你会感谢我们。

一个简单的程序

从这节课开始,你会看到许多C++代码,许多代码都大致长这个样子:

#include <iostream>
int main()
{
    std::cout << "Hello world!" << std::endl;
    return 0;
}

你可以把这段程序复制粘贴到你的IDE中,如果粘贴后带有行号记得去掉。

如果你用的是Visual Studio

点击“新建项目(New Project)”或上方导航栏中“文件新建项目(file-new-project)”,图中使用的是Visual Studio 2005,其他版本类似,左侧选择Visual C++,项目类型选择“win32”,然后选择“win32控制台应用程序(Win32 Console Application)”,“名称(Name)”一栏中填入项目名称,例如“HelloWorld”,“位置(Location)”一栏中填入或浏览项目保存位置,点击“确定(OK)”即可完成项目的创建,如下:

在左侧的解决方案资源管理器(Solution Explorer)中,Visual Studio已为你创建了一系列文件,包括stdafx.h,HelloWorld.cpp,stdafx.cpp。(译者注:其他版本与此可能不同,此处讲解仅帮助读者了解IDE基本工作流程)

文本编辑器中可能已经准备好了示例代码,如上图,选择删除它,然后键入如下代码:

#include "stdafx.h"
#include <iostream>
int main()
{
    std::cout << "Hello world!" << std::endl;
    return 0;
}

完成后如下:

接下来编译程序,点击上方导航栏中的“生成(builb)”-“生成解决方案(Build Solution)”,如果一切顺利,你将会在输出(output)窗口看到如下信息:

这意味着程序编译成功了!

如果要运行编译好的程序,按F5或者点击导航栏中的“调试(debug)”-“开始执行不调试(Start Without Debugging)”,就会看到如下结果:

这就是程序的运行结果。

:如果控制台窗口(黑窗口)没有任何文字,可能是受到了反病毒软件的干扰,尝试关闭反病毒软件然后重试一次。

对Visual Studio用户的提示:Visual Studio程序必须有如下开头:

#include "stdafx.h"

否则你可能收到编译器的警告,比如:c:testtest.cpp(21) : fatal error C1010: unexpected end of file while looking for precompiled header directive(寻找预编译头文件时发生致命错误)。

你也可以关闭预编译头文件,但使用预编译头文件能让你的程序编译得更快,所以我们建议保留他,除非你想编写跨平台应用。

我们给的示例程序不会包含这一行,因为它是针对特定编译器的。

如果你使用Code::Blocks

同样,点击“文件(file)”-“创建新项目(new project)”,会弹出如下窗口:

选择控制台应用程序(Console Application),点击创建(Create)按钮。

然后程序会让你选择保存项目,你可以保存在任何你喜欢的位置。

在“default workspace”栏会看到Console Application。

展开Console Application,打开“Sources”,双击main.cpp,你会看到hello world程序已经作为示例为你准备好了。

同样按ctrl+F9或者点击build(生成)-build,一切顺利的话,你会在Build log(生成日志)窗口看到如下内容:

这意味着程序编译成功了。

按ctrl+F10或者点击build菜单栏中的“run(运行)”,就会看到与前面类似的运行结果。

如果你使用命令行编译程序

译者注:windows中的cmd(命令行提示符)或者Linux中的终端(terminal)。在文本编辑器中(例如记事本)输入如下程序并保存命名为HelloWorld.cpp。

#include <iostream>
int main()
{
    std::cout << "Hello world!" << std::endl;
    return 0;
}

在命令行中输入(前面已经讲过):

g++ -o HelloWorld HelloWorld.cpp

就可编译、链接helloworld.cpp,输入“HelloWorld”(也可能是“./HelloWorld”)以运行程序,就可以看到程序的输出结果。

如果你暂时使用网页版的编译器

将代码输入文本框中,点击运行即可看到输出结果。

安装完整的IDE后,你还是需要重新学习一下这节课。

如果你使用其他IDE

那么要搞清楚下面几点:

  • 创建一个控制台项目
  • 向项目中添加.cpp文件(如果需要的话)
  • 将下面的代码写入文件
    #include <iostream>
    int main()
    {
        std::cout << "Hello world!" << std::endl;
        return 0;
    }
  • 编译项目
  • 运行项目

如果编译失败……(天哪,又出了什么事?!)

没关系,做个深呼吸,相信自己可以解决它。

首先,确保输入的代码正确无误,无任何拼写错误(不带行号),编译器的错误提示可以帮助你确定错误所在。

然后,对照《0.7节:常见的C++问题》。这节列举了一些常见的问题,包括许多人经常遇到的COFF错误。

如果还是不行的话,复制错误信息,到google上搜索(译者注:可以加上引号实现精确搜索,百度同样适用),很可能在你之前已经有人遇到并解决了这个问题。

如果你是用的是版本较老的C++编译器,可能给出编译器不知如何引入iostream的错误提示,如果遇到这种情况,可以尝试把代码修改为:

#include <iostream.h>
int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

建议升级编译器到最新版本。

如果程序成功运行但迅速闪退(窗口闪烁一下,然后很快消失)

某些编译器可能存在这种问题,比如Dev-C++,解决方案我们写在《0.7节:常见的C++问题》。

结语

祝贺你完成了最艰难的阶段(安装IDE并编译你的第一个程序),这意味着你迈出了第一步。

如果看不懂HelloWorld程序中每一行每一个单词符号的意思,不要担心,我们会在《1.1节:程序的结构》中详细地解释每一行。

转载请参看关于博客页面相关要求。

关于 “0.6编译你的第一个程序” 的 1 个意见

评论关闭。