返回:安全开发篇(一)目录 · 上一篇:002、Visual Studio 安装与配置 · 下一篇:004、C 语言程序架构

对应视频:1.2 基础-项目搭建第一个C语言程序.mp4

1、学习目标

这一节要完成第一个 C 语言控制台程序。重点不是 Hello World 本身,而是理解一个程序从源文件到可执行文件的大致流程。

目标清单:

  1. 创建空项目;
  2. 添加 .c 源文件;
  3. 写出最小 C 程序;
  4. 编译并运行;
  5. 能说明源代码、编译和运行结果之间的关系。

2、创建空项目

初学阶段建议创建 空项目,不要直接使用自动生成大量文件的模板。空项目最干净,能让每一个源文件都看得见来龙去脉。

项目命名可以按实验主题来:

场景 示例
第一个程序 hello_c
函数实验 function_demo
数组实验 array_demo
指针实验 pointer_demo
字符串实验 string_demo

不要把所有实验都塞进同一个工程。一个主题一个小项目,后面复盘、定位错误和整理笔记都会清楚很多。

3、添加源文件

空项目本身没有代码,需要手动添加源文件。

文件后缀 含义
.c 按 C 语言方式编译
.cpp 按 C++ 方式编译
.h 头文件,常用于声明函数、结构体、宏和公共接口

当前阶段以 C 语言为主,源文件可以命名为 main.c

4、第一个程序

1
2
3
4
5
6
7
#include <stdio.h>

int main(void)
{
printf("Hello, C Security!\n");
return 0;
}

这段代码包含了四个最基础元素:

元素 作用
#include <stdio.h> 引入标准输入输出头文件
int main(void) 程序入口函数
printf 向控制台输出内容
return 0 正常结束程序

5、编译与运行

运行前,源代码需要先被编译成可执行程序。

阶段 简单理解
编写源代码 .c 文件
预处理 处理 #include、宏等预处理指令
编译 把 C 代码翻译成目标代码
链接 把目标代码和库函数连接起来
运行 操作系统加载可执行文件并执行

初学阶段不需要一次性掌握编译链接细节,但要先知道:源文件不是直接运行的,运行的是构建出来的 .exe

6、常见错误

错误 可能原因 处理方式
找不到 printf 没有包含 stdio.h 补上 #include <stdio.h>
缺少分号 语句结尾忘写 ; 查看错误行附近
找不到入口点 没写 main 或函数名拼错 检查 int main(void)
无法编译 文件后缀、项目配置或组件缺失 检查 .c 文件和 VS 工作负载

7、安全开发观察

第一个程序虽然很小,但已经能连接后续安全开发:

  1. main 是入口点,逆向分析时也会关注程序从哪里开始执行;
  2. printf 是库函数调用,后续会看到更多 API 调用;
  3. 字符串常量会进入程序的数据区域;
  4. 编译链接会生成可执行文件,后续 PE 文件分析会继续展开。

8、复盘题

8.1 .c.cpp 后缀有什么区别?

.c 通常按 C 语言规则编译,.cpp 按 C++ 规则编译。两者语法兼容一部分,但不是完全相同;安全开发入门阶段要先确认当前示例到底按哪种语言规则构建。

8.2 为什么建议从空项目开始?

空项目不会自动生成多余文件,适合观察最小 C 程序的结构。这样更容易理解源文件、入口函数、头文件和编译运行之间的关系。

8.3 return 0 表示什么?

main 中,return 0 通常表示程序正常结束,并把退出状态返回给操作系统。

这一节结束后,要能独立新建空项目、添加 main.c、写出最小程序并成功运行。