📄 一句话概括
写完第一个程序,接下来要"看懂"它。C++ 的东西分两个视角:工程视角(外面)——一个项目文件夹里有哪些文件、谁管谁(.dev 记账、.cpp 写代码、.exe 是成品),对应 1.3.1;代码视角(里面)——一个 .cpp 文件里那几行各是什么角色(引入库、入口函数、输出语句、返回值),对应 1.3.2。两个视角都要会:出问题时,先判断是"文件层面"坏了(找不到文件、改动没生效)还是"代码层面"坏了(编译报错、逻辑不对)。
一、为什么要分两个视角
- 只懂代码视角的人:单个文件写得挺顺,一遇到"多文件工程""这个文件为什么编不进去"就懵
- 只懂工程视角的人:目录结构搞得漂亮,代码里少个分号照样编不过
- 两个都懂:能定位问题出在哪一层——这是从"会写"走向"会调"的分水岭
二、视角一:工程层面(1.3.1 展开)
一个 C++ 项目文件夹里通常躺着这几类东西:
| 文件 | 角色 | 生活比喻 |
|---|---|---|
xxx.dev |
工程文件:记录本工程有哪些源文件、用什么编译选项 | 记账本 |
xxx.cpp |
源文件:你写的代码正文 | 正文稿 |
xxx.o |
编译中间产物(目标文件) | 半成品 |
xxx.exe |
链接后生成的可执行程序 | 做好的菜 |
Makefile.win |
给编译器看的"施工图" | 施工图 |
三、视角二:代码层面(1.3.2 展开)
一个最简 C++ 程序由四段构成:
- 引入库——
#include <iostream>:告诉编译器"我要用输入输出功能" - 名字空间——
using namespace std;:省得每次写std::cout - 入口函数——
int main() { ... }:程序从这里开始执行,必须有且只有一个 - 语句与返回值——
cout << ...;、return 0;:干活与交差
记住这个骨架:以后写任何 C++ 程序,都是在这个骨架上"加料"——加变量、加判断、加循环、加函数。
四、动手:把视角切换练一遍(对照 1.2.3 的成果)
视角一动作:打开资源管理器进 D:\cpp,数一数有几个文件。看到什么算成功:能看到 hello.cpp 和 hello.exe(可能还有 .o、Makefile.win 之类)——这就是工程视角的实物。
视角二动作:用 Dev-C++ 打开 hello.cpp,从上到下标出四段结构。看到什么算成功:你能指着每一行说出"它是干什么的"——说不出的那几行,就是 1.3.2 要解决的。
30 秒实验:把 hello.cpp 复制一份改名 hello2.cpp,双击打开——你会发现它是个纯文本文件,.cpp 说到底就是"带特定写法的文本文件"(这也是为什么用记事本也能写 C++,只是没有编译按钮)。
五、常见误区
- "结构是用来背的"——不是背,是"用来看的":将来读到别人的代码,先用这个骨架拆一遍,理解速度立刻不一样
- "文件多了才需要工程视角"——单文件也有工程:
.dev、.cpp、.exe的关系搞清楚,才能回答"我改了代码为什么运行结果没变" - "代码结构 = 语法细节"——结构是"有哪些部分、各部分干什么";语法是"标点符号怎么写"。两者分开学,先结构后细节
自测三问(点开对答案)
1. 两个视角分别看什么?——工程视角看文件层面的组织(有哪些文件、谁管谁);代码视角看单个文件内部的骨架(引入库/入口/语句/返回值)。 2. 为什么要两个都懂?——排障时先判断是哪一层坏了:文件层(找不到文件、改动没生效)还是代码层(编译报错、逻辑错)。 3. 一个最简 C++ 程序的四段结构?——`#include` 引入库、`using namespace` 名字空间、`int main(){}` 入口函数、`cout` 语句与 `return 0;`。相关笔记
- 使用Dev-C++创建C++文件 —— 本节要"看懂"的对象就是它产出的
- C++工程项目文件 —— 工程视角细讲
- 认识C++代码结构 —— 代码视角细讲
- 小结 —— 全章收束