65.9K
CodeProject 正在变化。 阅读更多。
Home

Eclipse 和 CDT 用于 C/C++ 程序

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.81/5 (8投票s)

2016年2月12日

CPOL

22分钟阅读

viewsIcon

37345

downloadIcon

703

如何在 Eclipse 和 CDT 的帮助下编写 C/C++ 程序

引言

这是关于在 Eclipse 和 CDT 帮助下编写 C/C++ 程序的笔记。

背景

这篇笔记不是关于 C/C++ 或 makefile。它也不是关于面向对象的。它是关于 IDE 的。这是一篇关于在 Eclipse 和 CDT 帮助下编写 C/C++ 程序的笔记。我将使用 GNU GCC/G++make 来举例。我将给出 Linux 和 Windows 中的示例。我意识到这篇笔记变得不必要地冗长和复杂/繁琐,因为我只想通过示例回答以下简单问题。

  • 编译 C/C++ 程序需要什么?
  • 什么是 makefiles
  • C/C++ 需要 IDE 吗?
  • 我可以使用哪个 Eclipse 包进行 C/C++ 开发?
  • Eclipse 如何构建/编译 C/C++ 程序?
  • Eclipse 中的构建配置是什么?
  • Eclipse 中的 C/C++ 项目类型有哪些?
  • Eclipse 中 C/C++ 项目的“构建产物”是什么?
  • 什么是运行/调试启动配置?
  • 当我们使用不受 Eclipse 控制的第三方库时,Eclipse 如何提供智能感知?
  • 如果使用第三方库,我们需要告诉 Eclipse 什么才能让它为我们生成正确的“makefiles”?
  • 如何在同一个 Eclipse 工作区中的一个项目引用另一个项目?
  • 如果我在 Linux 中创建一个 C/C++ 项目,我可以顺利地将其转移到 Windows 吗?
  • 从示例中,您认为使用 Eclipse 进行 C/C++ 开发最重要的概念是什么?
  • 您对 Eclipse 作为 C/C++ 开发 IDE 的感受如何?
  • 您还想让我们知道什么?

如果您没有足够的耐心,可以直接转到总结部分查看答案。如果您在自己的项目中遇到任何问题,可以返回查看详细信息。它将来可能会为您提供一些参考价值。所有附带的示例项目都在 Linux 中创建。如果您想在 Windows 中下载并尝试它们,您可能需要参考 示例 3 - Linux 和 Windows 之间的项目兼容性 部分。无论如何,让我们首先为示例准备好环境。

环境设置

Linux 环境

在大多数 Linux 系统中,环境默认已安装。但最好再次检查。在我的 Linux Mint 机器上,我注意到没有安装“g++”,所以我通过 sudo apt-get install g++ 安装了它。在 Ubuntu/Mint 计算机上,您可以发出以下命令检查是否安装了“gcc”、“g++”和“make”。

  • which gcc
  • which g++
  • which make

如果它们已安装,which 命令会告诉您安装目录。如果未安装,您可以通过 sudo apt-get install build-essential 安装它们。

Windows 环境

在 Windows 系统中,GNU 的对应是 MinGW。您可以按照在线说明安装 MinGW。为简单起见,我使用提供的自动化 GUI 安装程序安装了 MinGW。安装后,您需要将 _C:\MinGW\bin_ 和 _C:\MinGW\msys\1.0\bin_(或您安装 MinGW 的任何文件夹)添加到 Windows Path 变量中。您可以使用以下命令检查安装:

  • gcc --help
  • g++ --help
  • make --help

根据 MinGW 文档,您应该避免安装路径中包含空格。

Eclipse IDE

Eclipse 是一个 Java 程序。它适用于 Linux 和 Windows。对于 C/C++ 开发,您可以使用 Eclipse IDE for C/C++ Developers,它与 CDT 打包在一起。您也可以使用 Eclipse Marketplace 在其他 Eclipse 包上安装 CDT。您可能需要参考此链接以确保 Eclipse 使用您想要的 Java 版本。在这篇笔记中,我使用 Eclipse IDE for C/C++ Developers Mars 1 来完成所有示例。

一个简单的 Makefile 示例

在大多数情况下,Eclipse 通过 makefiles 构建 C/C++ 程序。在开始使用 Eclipse 之前,手动构建一个 makefile 程序是有益的。附件中的 _makefile-example.zip_ 是最简单的 makefile 项目,它包含一个 C++ 源文件、一个 makefile 和一个空的 _build_ 目录,我们将在其中放置编译后的目标文件和可执行文件。

#include <stdio.h>

int main() {
    printf("This is an make file example\n");
    return 0;
}
CC=g++
BUILD=build

all: $(BUILD)/makefile-example

$(BUILD)/makefile-example: $(BUILD)/main.o
    $(CC) -o $(BUILD)/makefile-example $(BUILD)/main.o

$(BUILD)/main.o: main.cpp
    $(CC) -c -o $(BUILD)/main.o main.cpp

run: $(BUILD)/makefile-example
    $(BUILD)/makefile-example    

clean:
    find $(BUILD) -type f -delete

如何使用 GNU make 是一个全面的主题。如果您致力于 C/C++ 开发,最终您将不得不通读这份文档。但对于本笔记,您应该了解以下内容:

  • 在放置 makefile 的目录中,如果您发出 makemake all 命令,目标文件和可执行文件将构建到 _build_ 文件夹中;
  • 如果您发出 make clean 命令,目标文件和可执行文件将被删除。

下图显示 make run 命令构建了项目并执行了可执行文件。

示例 1 - 一个简单的可执行 Eclipse 项目

作为第一个 Eclipse 示例,我将创建一个简单的可执行项目。从 Eclipse -> **文件** -> **新建** -> **C++ 项目**,我们可以启动项目向导。

我将创建一个空的可执行项目。由于我是在 Linux 环境中创建项目,我选择 **Linux GCC** 作为工具链。为简单起见,我只在项目根目录中添加了一个 _main.cpp_ 文件。

#include <stdio.h>

int main() {
    printf("This is a simple executable project\n");
    return 0;
}

如果现在右键单击项目名称 -> **构建项目**,您会注意到 Eclipse 创建了一个 _Debug_ 目录。在 _Debug_ 文件夹中,您可以看到 makefile(以及与 makefile 相关的几个 _.mk_ 文件)和名为 _an-executable-project_ 的可执行文件。

如果现在右键单击项目名称 -> **运行方式** -> **本地 C/C++ 应用程序**,您会看到可执行文件被执行。

通过这个简单的运行示例,我们准备好查看 Eclipse 如何管理 C/C++ 项目以回答以下问题。

  • Eclipse 如何构建 C/C++ 程序?
  • Eclipse 如何运行/调试已构建的可执行文件?
  • **makefiles** 是如何生成的?

构建配置

现在右键单击项目名称 -> **属性** -> **C/C++ 构建**。我们可以看到构建设置。

构建设置工具是我们配置 Eclipse 如何构建应用程序的主要位置。单击 **管理配置...** 按钮,我们可以看到 Eclipse 为空的可执行项目创建了两个构建配置。

我们可以添加、删除、重命名构建配置。如果有一个以上的构建配置,我们可以设置其中一个为活动配置。活动构建配置是我们右键单击项目名称 -> **构建项目/清理项目** 时使用的构建配置。当我们添加新的构建配置时,我们会注意到文本“配置名称将用作文件系统中的目录名”。由于活动配置是 **Debug**,当我们构建项目时会创建 _Debug_ 文件夹,其中包含所有 Eclipse 生成的 makefiles、目标文件和与 **Debug** 配置相关的可执行文件。

对于 **行为** 选项卡中的 **Debug** 配置,您会注意到 Eclipse 通过 make all 命令构建项目,并通过 make clean 命令清除项目。

我想借此机会就 **刷新策略** 选项卡添加一个额外的说明,该选项卡适用于所有 Eclipse 项目,而不仅仅是 C/C++ 项目。

在 Eclipse 中,**刷新** 的定义没有很好的文档。一般来说,Eclipse 试图获取项目中所有文件的所有信息,并尝试利用这些信息为我们提供尽可能多的便利,例如语法高亮、智能感知等。如果所有更改都通过 Eclipse 进行,这相对容易。但有时,文件可能会在 Eclipse 外部更改。例如,文件可能由其他程序更改,例如从源代码控制系统检出一些代码。Eclipse **刷新** 分析源文件以及可能的其他文件,以检查是否在 Eclipse 外部进行了任何更改,如果是,**Eclipse** 将尝试将更改纳入其控制。

启动配置

右键单击项目名称 -> **属性** -> **运行/调试设置**。我们可以看到启动配置。

在构建项目后,当我们右键单击项目名称 -> **运行方式** -> **本地 C/C++ 应用程序** 时,Eclipse 为我们创建了一个启动配置 an-executable-project。我们可以添加、编辑和删除启动配置。

对于 an-executable-project 启动配置,我们可以看到以下内容

  • 如果我们通过 an-executable-project 配置在 Eclipse 中运行项目,我们将运行 _Debug_ 目录中的 _an-executable-project_ 文件;
  • 启动配置与构建配置相关联。默认情况下,当我们在 Eclipse 中运行项目时,它将触发与关联构建配置的构建,以重建 _Debug_ 目录中的可执行文件。

我们知道每个构建配置都将可执行文件构建到其自己的目录中。我们应该确保启动配置中的可执行路径与构建配置匹配。否则,您会注意到即使您已更改了源代码,您仍在运行旧的可执行文件。如果您更改启动配置的关联构建配置,Eclipse 不会自动调整可执行路径。

配置 Makefile 的生成方式

在 _an-executable-project_ 中,您应该已经注意到 **自动生成 Makefile** 复选框。

  • 如果创建 Executable、"Static Library" 或 "Shared Library" 项目,此复选框将自动选中;
  • 如果创建 Makefile 项目,则表示您将自行创建 makefiles。但您随时可以改变主意并选中此复选框,让 Eclipse 为您生成 makefiles

如果选中了 **自动生成 Makefile**,您可以通过右键单击项目名称 -> **属性** -> **C/C++ 构建** -> **设置** 来控制 makefiles 的生成方式。

对于简单的 an-executable-project,我们不需要更改任何默认设置。如果您查看 Debug 构建配置,您会发现 Eclipse 默认将 -g3 添加到编译选项中,以便我们可以在调试模式下运行编译后的可执行文件。如果默认设置不符合您的需求,您可以随时更改设置,让 Eclipse 生成您想要的 makefiles

在 **构建产物** 选项卡中,您可以选择更改 **产物类型**。这些产物对应于 Eclipse 中的项目类型。如果要在项目创建后更改项目类型,可以在此处更改。生成的“makefiles”中将为不同的产物类型添加不同的构建命令,以将项目构建成可执行文件、共享库或静态库。

对于构建配置,您可以更改 **构建类型**。只有选择“**外部构建器**”选项时,makefiles 才会在相应的构建目录中明确生成。重要的是要记住,关于 makefiles 生成方式的设置是基于每个构建配置进行配置的。

示例 2 - 静态库项目和项目引用

在此示例中,我将创建一个静态库项目。我还将创建一个可执行项目。此示例的目标是展示如何从可执行项目引用静态库。让我们首先创建静态库项目。

静态库项目

静态库项目名为 static-math-library。项目创建后,我们可以右键单击项目名称 -> **属性** -> **C/C++ 构建** 查看构建配置。

我们应该看到 Eclipse 创建了两个构建配置,并且 **Debug** 是活动配置。如果我们进一步右键单击项目名称 -> **属性** -> **C/C++ 构建** -> **设置**,我们可以看到 makefiles 是如何生成的。

我们应该看到 makefiles 将使用 ar 命令将项目打包成一个 static 库。现在我们可以添加一个简单的类。_Math.h_ 文件已添加到 _header_ 目录中。

#ifndef HEADER_MATH_H_
#define HEADER_MATH_H_

namespace static_math {

class Math {
public:
    Math();
    virtual ~Math();
    virtual int WeightedAdd(int i, int j);
};

}

#endif

_Math.cpp_ 文件已添加到 _src_ 目录。

#include "../header/Math.h"

namespace static_math {

    Math::Math() {}
    Math::~Math() {}

    int Math::WeightedAdd(int i, int j) {
        int w = 1;

        return w * (i + j);
    }
}

右键单击项目名称 -> **构建项目**,静态 库 _libstatic-math-library.a_ 将构建到 _Debug_ 目录中,因为 Debug 构建配置是活动的构建配置。

您可能需要注意,头文件和 _cpp_ 文件放在了不同的目录中。这将影响我们如何从即将创建的可执行项目引用 静态 库项目。

可执行项目

为了使用 static-math-library,让我们创建一个可执行项目 static-math-executable。项目创建后,让我们将 _main.cpp_ 文件添加到项目的根目录。

#include <stdio.h>
#include "Math.h"

int main() {

    static_math::Math math;
    int result = math.WeightedAdd(1, 2);

    printf("The weighted addition is %d\n", result);

    return 0;
}

保存 _main.cpp_ 文件后,我们会立即看到以下问题

为了引用 static-math-library 项目,我们需要做以下几点:

  • 我们需要告诉 Eclipse 在哪里找到头文件,以便我们可以在文本编辑器中使用智能感知;
  • 我们需要告诉 Eclipse 在哪里找到头文件,以便生成的 makefiles 知道如何添加正确的 -I 选项来编译代码;
  • 我们需要告诉 Eclipse 在哪里查找 static 库和库的名称,以便生成的 makefiles 知道如何添加正确的 "-L" 和 "-l" 选项来链接可执行文件。

配置项目引用

在 Eclipse 中,告诉 static-math-executable 项目在哪里找到头文件和 static 库最简单的方法是右键单击项目名称 **static-math-executable** -> **属性** -> **C/C++ General** -> **路径和符号** 并打开 **引用** 选项卡。

您可以检查所需的项目引用。您应该记住,该引用是基于每个构建配置进行配置的。对于 static-math-executable 项目中的 **Debug** 配置,我们选择引用 static-math-library 项目中的 **Debug** 配置。

如果我们现在查看 **包含** 选项卡,Eclipse 在我们配置构建配置的引用后,会自动将 static-math-library 项目的 _根_ 目录添加到 include 路径中。它希望在 static-math-library 项目的 _根_ 目录中找到所有头文件。

它还在 **库路径** 选项卡中添加了 static-math-library 的 _Debug_ 目录,它期望在此处找到 static 库。

最后,Eclipse 还将 static-math-library 添加到 **库** 选项卡中,它在链接可执行文件时会将其作为 -l 选项添加到 makefile 中。

手动修复“Includes”路径

由于我们已经添加了项目引用,您可能会期望我们可以构建 static-math-executable。但不幸的是,当您构建它时,您会看到以下问题。

原因是 Eclipse 在 _Includes_ 路径中添加了 static-math-library 项目的根目录,但 _Math.h_ 文件位于 _header_ 目录中。我们需要将 _Includes_ 更改为 _header_ 目录。

现在我们可以右键单击项目名称 -> **构建项目** 来构建可执行文件。可执行文件构建完成后,我们可以右键单击项目名称 -> **运行方式** -> **本地 C/C++ 应用程序** 来运行可执行文件。

如果您现在对 _Math.cpp_ 进行一些更改,您会注意到您不需要分别构建 静态 库和可执行项目。您可以直接运行可执行项目,将触发一次完整的重新构建,因为项目引用告诉 Eclipse 如果 static-math-library 被修改,则全部重新构建。

示例 3 - Linux 和 Windows 之间的项目兼容性

到目前为止,所有示例项目都是在 Linux 中创建的。如果我们将它们复制到 Windows 中,看看它们如何工作会很有趣。在这个例子中,我将“示例 2”中的两个项目 static-math-librarystatic-math-executable 复制到 Windows 中。

  • 在复制之前,我对这两个项目都运行了“清理项目”,并删除了所有与构建配置相关的目录,例如项目中的 _Debug_ 和 _Release_ 目录(如果存在);
  • 通过删除 _Debug_ 和 _Release_ 目录,我强制 Eclipse 在项目加载到 Eclipse 后重新生成构建配置的 makefiles
  • 要在 Windows 中尝试这些项目,我需要确保在 Windows 中设置了 MinGW

在 Windows 中,我们可以使用一个“_EMPTY_”的“_workspace_”文件夹启动 Eclipse。启动 Eclipse 后,我们可以导入从 Linux 复制的两个项目。由于 static-math-executable 项目引用了 static-math-library 项目,所以我首先导入了 static-math-library 项目。由于这些项目已经是 Eclipse 项目,我通过 **文件** -> **导入...** -> **常规** -> **现有项目到工作区** 导入它们。

由于我们将在 Windows 中使用 MinGW 编译 C/C++ 代码,我们可以右键单击项目名称 -> **属性** -> **C/C++ 构建** -> **工具链编辑器** 来更改工具链。我们需要对这两个项目都执行此操作。

  • 当前工具链已更改为 **MinGW GCC**;
  • 当前构建器已更改为 **Gnu Make Builder**。

如果现在右键单击 static-math-executable 项目 -> **构建项目**,我们可以看到两个项目都成功构建。因为是在 Windows 上,所以可执行文件有一个 _exe_ 扩展名。

项目构建完成后,我们可以右键单击 static-math-executable 项目 -> **运行方式** -> **本地 C/C++ 应用程序** 来运行可执行文件。

并非所有 C/C++ 项目都能轻松从 Linux 迁移到 Windows。但对于此处所示的示例,转换非常顺利和愉快。

摘要

我们现在准备回答本笔记开头提出的问题。

  • 编译 C/C++ 程序需要什么?
    • 在 Linux 中,您可以使用 GNU GCC/G++ 和 make
    • 在 Windows 中,您可以使用 MinGW
    • 还有其他 C/C++ 编译器。最著名的是 Microsoft Visual C++,但它不在本文讨论范围之内。
  • 什么是 makefiles
    • makefile 是一组由一些 预定义规则 组织的 C/C++ 编译命令;
    • 大多数常见的 makefiles 将具有 allclean 规则,用于编译 C/C++ 项目和清除所有构建结果;
    • 在大多数常见用例中,Eclipse 使用 all 构建项目,使用 clean 清除构建结果。
  • C/C++ 需要 IDE 吗?
    • 答案是“不”和“是”;
    • 许多 C/C++ 专家选择不使用 IDE,因为他们擅长创建自己的 makefiles,并且熟悉构建/调试 C/C++ 程序的所有命令;
    • 对于经验较少的 C/C++ 程序员来说,IDE 会有很大的帮助。它提供了 C/C++ 项目的轻松概览。它提供了智能感知、实时语法检查。它提供了集成的调试环境。对于经验较少的 C/C++ 程序员来说,它可以为您生成 makefiles
    • 即使对于经验丰富的 C/C++ 程序员,如果你拿到别人写的一大块代码,最好把它加载到 IDE 中进行学习和阅读。这比阅读文档容易得多。在大多数情况下,文档写得并不好;
    • 从我的经验来看,我会说“是”。我们需要一个 IDE。
  • 我可以使用哪个 Eclipse 包进行 C/C++ 开发?
  • Eclipse 如何构建/编译 C/C++ 程序?
    • Eclipse 使用 makefiles 来构建 C/C++ 程序;
    • 您可以选择提供自己的 makefiles,或者让 Eclipse 为您生成 makefiles
    • 如果您不明确更改它,Eclipse 将使用 make all 命令构建项目,并使用 make clean 清除构建结果;
    • 如果您选择让 Eclipse 为您生成 makefiles。只有当您使用 **外部构建器** 时,Eclipse 才会明确生成 makefiles
  • Eclipse 中的构建配置是什么?
    • 构建配置是您控制 Eclipse 如何构建项目的一组规则;
    • 一个项目可以有多个构建配置,并且必须有一个且仅有一个活动配置;
    • 您可以将其中任何一个设置为活动构建配置;
    • 当您构建或清理项目时,生效的是活动构建配置;
    • 在 Eclipse 中,构建配置的名称对应于文件系统中的目录/文件夹。Eclipse 会将生成的 makefiles 和构建结果放入此目录/文件夹中。
  • Eclipse 中的 C/C++ 项目类型有哪些?
    • 从更广阔的视角来看,Eclipse 只提供两种项目类型。**Makefile 项目** 类型意味着您将自行提供 makefiles,其他类型则意味着您将让 Eclipse 为您生成 makefiles
    • 如果您选择让 Eclipse 为您生成 makefiles,您可以选择 Executable、"Static Library" 或 "Shared Library" 项目类型。
  • Eclipse 中 C/C++ 项目的“构建产物”是什么?
    • 如果您选择让 Eclipse 为您生成 makefiles,则构建产物对应于项目类型;
    • 构建产物最主要地影响 makefiles 的生成方式,因为 Executable、"Static Library" 或 "Shared Library" 需要不同的命令来构建。
  • 什么是运行/调试启动配置?
    • 您可以在 Eclipse 中运行/调试 Executable 项目;
    • 运行/调试启动配置告诉 Eclipse 哪个可执行文件要运行或调试;
    • 运行/调试启动配置与构建配置相关联。如果您更改了代码,Eclipse 将在使用关联的构建配置重建项目,然后才启动可执行文件;
    • 您可以有多个运行/调试启动配置,您可以选择其中一个在 Eclipse 中运行/调试您的可执行文件。
  • 当我们使用不受 Eclipse 控制的第三方库时,Eclipse 如何提供智能感知?
    • Eclipse 需要知道第三方库的头文件才能提供智能感知;
    • 您可以右键单击项目名称 -> **属性** -> **C/C++ General** -> **路径和符号**,将头文件位置添加到 **包含** 选项卡。
    • 即使我们在同一个 Eclipse 工作区中引用另一个项目,Eclipse 也可能不完全了解头文件,如果需要,您可能需要手动添加它们。
  • 如果使用第三方库,我们需要告诉 Eclipse 什么才能让它为我们生成正确的 makefiles
    • 我们需要告诉 Eclipse 头文件位置;
    • 我们需要告诉 Eclipse 在哪里找到第三方库;
    • 我们需要告诉 Eclipse 哪个文件是第三方库;
    • 我们可以通过右键单击项目名称 -> **属性** -> **C/C++ General** -> **路径和符号** 来实现。
  • 如何在同一个 Eclipse 工作区中的一个项目引用另一个项目?
    • 在同一个 Eclipse 工作区中,从一个项目引用另一个项目的最佳方式是右键单击项目名称 -> **属性** -> **C/C++ General** -> **路径和符号** 并选中 **引用** 选项卡;
    • 引用是根据构建配置而非整个项目进行配置的。它引用另一个项目的另一个构建配置;
    • 添加引用可能不会告知所有有关被引用项目的信息,您可能需要手动更改一些设置。
  • 如果我在 Linux 中创建一个 C/C++ 项目,我可以顺利地将其转移到 Windows 吗?
    • 在本笔记的示例中,过程非常顺利;
    • 但不能保证,因为环境可能不完全兼容。
  • 从示例中,您认为使用 Eclipse 进行 C/C++ 开发最重要的概念是什么?
    • 构建配置最重要,因为它们说明了项目将如何构建。它也很重要,因为几乎所有其他配置都与构建配置相关联;
    • 运行/调试启动配置很重要,因为您通常会在 Eclipse 中调试代码。了解启动配置与构建配置相关联非常重要,这样您就可以确定正在运行的确切可执行文件,因为您可能有多个可执行文件(因为您可能有多个构建配置);
    • **路径和符号** 配置,特别是 **包含** 配置很重要。您需要告诉 Eclipse 在哪里找到所有头文件,以便 Eclipse 可以提供智能感知来帮助您编写代码;
    • 如果您希望 Eclipse 为您生成 makefiles,您可能需要检查 **C/C++ General** -> **Paths and Symbols** 中的所有选项卡,以确保 Eclipse 生成正确的 makefiles
    • 如果您乐于为一个足够大的项目自己创建 makefiles,那么您已经是 C/C++ 专家,并且可能已经有了自己的判断。
  • 您对 Eclipse 作为 C/C++ 开发 IDE 的感受如何?
    • 总的来说,我认为 Eclipse 作为 C/C++ IDE 表现出色;
    • Eclipse 生成的 makefiles 相当不错;
    • 配置和项目/第三方引用是可管理的;
    • 对于非 C/C++ 专家来说,使用 Eclipse 进行 C/C++ 开发的学习曲线适中且可管理。
    • 在极少数情况下,您可能会遇到一些小故障。如果您确定没有犯任何错误,通常可以通过清理项目并重新构建来解决问题。有时,手动刷新项目也可能有所帮助。
  • 您还想让我们知道什么?
    • 我发现这个 stack overflow 链接 非常有帮助,而不是复制到这篇笔记中;
    • 希望您阅读本笔记后能开始使用 Eclipse 作为您的 C/C++ IDE。至少您会知道在哪里找到您遇到的问题的解决方案。

关注点

  • 这是一篇关于在 Eclipse 和 CDT 帮助下编写 C/C++ 程序的笔记;
  • 这篇笔记最终变得不必要地冗长和复杂/繁琐。如果您没有耐心,您不需要阅读它。您可以只查看问题和答案;
  • 所有附加项目均在 Linux 中创建。如果您想在 Windows 中尝试它们,可以参考“示例 3 - Linux 和 Windows 之间的项目兼容性”部分;
  • 希望您喜欢我的帖子,也希望这篇笔记能以某种方式帮助到您。

历史

  • 2016年2月12日:首次修订
© . All rights reserved.