C++学习1 入门介绍、第一个程序

铁名_IronName Lv5

0.1 教程介绍

testimonial n.推荐信

充分利用教程的方法:

  • 手打案例。这将帮助你了解自己通常在哪里出错,同时也有助于你熟悉各种因打字错误(拼写错误)而产生的诊断信息。
  • 自己修bug。在求助之前。学会用debugger,调试器。
  • 用examples做试验。增加功能、尝试非法输入
  • 花时间解决问题。(对于没花时间寻找and修过bug的人
  • 用学会了的概念写点小程序

如果在某个概念上卡住了?

  • 看看评论区。别人可能也会遇到
  • 看看后面的课程,可能后面会讲
  • 用搜索引擎自己查
  • 问问AI。小心真实性
  • 去论坛提问
    都不行的话,放下吧。以后回头再看会更好理解。

如果忘记了某个概念?

用网站的 Site index 工具查找。

小结:严肃阅读英文教程,为未来阅读其他英文资料做铺垫。


0.2 对程序和编程语言的介绍

facilitate vt.促进
cater to 迎合
compatible adj.兼容的
portable adj.可移植的
port v.移植

为一个CPU family(e.g. x86, Arm64) 写的机器语言程序不能在其他family上运行。

assembly 汇编 assemble v.汇编

会妨碍 C++ 代码可移植性的东西

  • 使用平台特性
  • 很多第三方库只在特定的平台上可用,所以说,如果你用了这种库…
  • 使用compilers的特别extensions。会导致你的程序不能被其他编译器编译。
  • 由compiler决定的“implementation-defined behavior”(语言标准未统一规定具体结果,但强制要求‌每个编译器/平台实现必须选定一种确定行为并公开文档说明‌的程序行为;其结果在特定实现下是‌确定且可预测的‌,但跨平台可能不同 。‌‌)

本教程会尽可能避免使用平台特性的代码,让我们的程序可以在任何拥有现代C++编译器的平台上运行。

Nomenclature 命名法

虽然C++被认为是高级语言,但和新生的语言(比如脚本语言,提供更高级的抽象)相比,有时会把C++称为”底层语言“(这是不准确的!)


0.3 对C/C++的介绍

C++在1998年被ISO协会标准化。C++11是个大更新,被认为是该语言的新基线版本。
C和C++的设计哲学可以被总结为“相信程序员”,这是非常好也是非常危险的。所以知道不该用C/C++做什么也很重要。

0.4 对C++开发的介绍

定义问题、设计解决方案、用程序实现解决方案、编译程序、链接文件、测试程序、调试(再编译程序)。
Coding Font 和 Programming Fonts 可以在线预览字体。可以挑自己喜欢的。
业界规范:主源文件命名为 main.cpp


0.5 对编译器、链接器和库的介绍

编译程序

编译程序需要用C++ compiler,也就是C++编译器。编译器会遍历你程序中的所有代码文件,完成两件重要的任务:语法检查 和 转化代码文件为机器语言指令。这些指令存储在一个称为object file(目标文件) 的中间文件中。目标文件的后缀一般是.o/.obj。

链接文件

链接文件需要用 linker,链接器。链接器会把目标文件和库文件连接起来,生成输出文件,一般是exe可执行文件(不过也可能是一个库文件,如果你设置了的话)。

标准库

C++ Standard Library,“the standard library”。绝大多数的C++链接器默认配置为连接标准库的。
也有第三方库可以用。附录里会教“如何连接第三方库”和“创建自己的库”。

构建 Building

由于(将源代码转换为可执行程序)涉及多个步骤,“构建(building)” 这个术语通常用来指代将源代码文件转换为可运行可执行程序的完整过程。
通过构建生成的具体可执行程序,有时也被称为一个 “构建版本(a build)”
构建自动化工具:make,build2


0.6 安装IDE
确认了下电脑上VS 2022 Community。

0.7 编译你的第一个程序

(并非第一个)

最佳实践

为每个程序创建一个项目。

compile, build, rebuild, clean, and run/start

  • Build(构建):编译项目中或工作区/解决方案内所有被修改过的代码文件,然后将目标文件链接成可执行程序。如果自上次构建以来没有任何代码文件被修改过,则该选项不执行任何操作。
  • Clean(清理):删除所有缓存的中间文件(目标文件)和可执行文件,这样下一次构建项目时,所有文件都会被重新编译,并生成一个新的可执行程序。
  • Rebuild(重新生成):先执行“清理(Clean)”,再执行“构建(Build)”。
  • Compile(编译):重新编译单个代码文件(无论它之前是否被缓存过)。此选项不会调用链接器,也不会生成可执行程序。
  • Run / Start(运行/启动):执行先前构建生成的可执行程序。部分 IDE(例如 Visual Studio)会在执行“运行”之前自动先执行一次“构建(Build)”,以确保你运行的是代码的最新版本。而另一些 IDE(例如 Code::Blocks)则只会直接执行已有的可执行文件(而不主动重新构建)。

又HelloWorld了一次呢。

0.8 一些常见的C++问题

通用运行时问题

问题解决方案
控制台窗口闪退main 末尾添加 cin 等待输入的代码,或用 Ctrl+F5(VS)运行
窗口出现但无输出检查杀毒软件是否拦截了程序运行
编译通过但运行不正确学习使用调试器(debugger),后续章节会详细介绍

通用编译时问题

编译错误信息常见原因与解决办法
unresolved external symbol _main缺少 main() 函数 / 拼写错误 / 文件未加入项目
main 已定义 / 多个定义项目中存在多个 main(),只保留一个
C++11/14/17 功能不支持编译器太旧或默认标准版本过低,需升级或修改设置
无法打开 .exe 写入程序正在运行 / 杀毒拦截 / 文件被锁定
cin/cout/endl 未声明未包含 <iostream> / 未加 std:: 前缀
end1 未声明endl 中的字母 l 误写成数字 1

Visual Studio 相关问题

问:使用 Microsoft Visual C++ 编译时,出现 C1010 致命错误,错误信息类似:
"c:\vcprojects\test.cpp(263) : fatal error C1010: unexpected end of file while looking for precompiled header directive"

(中文含义:在查找预编译头指令时遇到意外的文件结尾)

当 Microsoft Visual C++ 编译器设置为使用预编译头(Precompiled Headers),但你的一个(或多个)C++ 代码文件没有#include "stdafx.h"#include "pch.h" 作为该文件的第一行代码时,就会触发此错误。

我们建议的解决方法是关闭预编译头功能,具体操作方式我们在第 0.7 课——编译你的第一个程序中已做说明。

如果你希望保留预编译头功能,要解决此问题,只需找到产生错误的文件(在上述错误中,test.cpp 就是问题所在),并在该文件的最顶部添加以下行:

1
#include "pch.h"

旧版本的 Visual Studio 使用的是 "stdafx.h" 而不是 "pch.h",因此如果 pch.h 无法解决问题,请尝试使用 stdafx.h

请注意,对于包含多个文件的程序,每个 C++ 代码文件都需要以这行代码开头。

问:Visual Studio 给出类似这样的错误:
"MSVCRTD.lib(exe_winmain.obj) : error LNK2022: unresolved external symbol _WinMain@16 referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)"
(中文含义:无法解析的外部符号 _WinMain@16)

你很可能创建了一个 Windows 图形界面应用程序,而不是控制台应用程序。请重新创建项目,并确保创建时选择的是 Windows(或 Win32)控制台项目

问:编译程序时,收到一条警告: "Cannot find or open the PDB file"
(中文含义:无法找到或打开 PDB 文件)

这是一个警告,而不是错误,因此不会影响你的程序运行。但它确实很烦人。要解决此问题,请进入 调试(Debug)菜单 → 选项和设置(Options and Settings)→ 符号(Symbols),然后勾选 “Microsoft 符号服务器(Microsoft Symbol Server)”

  • 标题: C++学习1 入门介绍、第一个程序
  • 作者: 铁名_IronName
  • 创建于 : 2026-08-05 16:33:51
  • 更新于 : 2026-08-05 19:41:54
  • 链接: https://blog.ironname.top/2026/Cpp/Cpp学习1/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论