Git行尾符战争:如何彻底解决CRLF与LF的跨平台噩梦

目录

  • 前言
  • 1 问题现象:那些令人困惑的Git警告
    • 1.1 典型的警告信息
    • 1.2 相关错误现象
  • 2 问题本质:CRLF与LF的历史渊源
    • 2.1 技术背景解析
    • 2.2 Git的智能处理机制
    • 2.3 核心配置参数:core.autocrlf
  • 3 根本原因:为什么会出现这个问题?
    • 3.1 跨平台开发的必然冲突
    • 3.2 缺乏统一的团队规范
    • 3.3 IDE和编辑器的默认行为
  • 4 完整解决方案:从个人到团队的全面应对
    • 4.1 个人开发环境配置
      • 4.1.1 基础Git配置
      • 4.1.2 IDE/编辑器统一配置
    • 4.2 项目级标准化配置(推荐方案)
      • 4.2.1 创建完善的.gitattributes文件
      • 4.2.2 创建.editorconfig文件
    • 4.3 一次性修复现有问题
      • 4.3.1 安全修复流程
      • 4.3.2 批量转换工具
      • 4.3.3 Git过滤器方法
  • 5 预防措施:构建健壮的开发流程
    • 5.1 团队规范建设
      • 5.1.1 编码规范文档
    • 编辑器配置
      • 5.2.2 CI/CD流水线检查
    • 5.3 工具链集成
      • 5.3.1 使用lint-staged和Husky
      • 5.3.2 专用行尾符检查工具
  • 6 特殊情况与高级技巧
    • 6.1 混合内容文件处理
    • 6.2 大型仓库的优化策略
    • 6.3 分布式团队的协作策略
  • 7 常见问题解答(FAQ)
    • Q1:这些警告会影响我的代码功能吗?
    • Q2:我应该选择CRLF还是LF?
    • Q3:如何检查文件当前的行尾符?
    • Q4:修复行尾符会改变文件内容吗?
    • Q5:`.gitattributes`和`.editorconfig`有什么区别?
  • 结语
  • 参考资料

前言

“为什么我的代码在Windows上运行正常,一到Linux服务器就报错?”“团队协作时,为什么Git总显示那些烦人的警告信息?”如果你在跨平台开发中遇到过这些困扰,那么你很可能遭遇了Git行尾符问题。这个看似微小的技术细节,却能在团队协作中引发巨大的混乱。

行尾符问题如同软件开发中的“幽灵”——看不见、摸不着,却能在关键时刻让你抓狂。本文将带你深入理解CRLF与LF的本质差异,提供一套完整的解决方案,并分享如何在团队中建立规范,彻底告别行尾符引发的各种问题。

1 问题现象:那些令人困惑的Git警告

1.1 典型的警告信息

当你在Git中执行操作时,可能会遇到这样的警告:

warning: CRLF will be replaced by LF in README.md. The file will have its original line endings in your working directory warning: CRLF will be replaced by LF in src/services/llm.ts. The file will have its original line endings in your working directory

这些警告通常出现在以下几种场景:

  • 使用git add .添加文件时
  • 克隆仓库后首次提交更改
  • 在不同操作系统之间切换开发环境
  • 团队成员使用不同的操作系统进行协作

1.2 相关错误现象

有时还会伴随其他相关错误:

error: pathspec 'agent' did not match any file(s) known to git error: pathspec 'skill'' did not match any file(s) known to git

这些错误可能与路径分隔符或文件不存在有关,虽然与行尾符问题不完全相同,但常常同时出现,进一步增加了调试的复杂性。

2 问题本质:CRLF与LF的历史渊源

2.1 技术背景解析

要理解这个问题,我们需要回到计算机历史的早期阶段:

  • CRLF:回车+换行(Carriage Return + Line Feed,\r\n

    • 起源于打字机时代:回车(将打印头移回行首)+ 换行(将纸张上移一行)
    • Windows系统继承此传统,使用CRLF作为行结束符
  • LF:换行(Line Feed,\n

    • Unix/Linux/macOS系统采用LF作为行结束符
    • 简化的设计理念:一个字符完成换行操作

2.2 Git的智能处理机制

Git作为分布式版本控制系统,需要处理来自不同操作系统的代码。它的核心挑战是:如何在保持历史记录的同时,确保代码在不同平台上都能正常工作?

Git的处理逻辑可以用以下流程表示:

工作目录(不同格式) → 暂存区(统一格式) → Git仓库(统一存储)

具体来说:

  1. 检出时:根据配置将统一格式转换为适合当前系统的格式
  2. 提交时:将各种格式统一转换为标准格式存储
  3. 跨平台传输:始终保持仓库内的统一格式

2.3 核心配置参数:core.autocrlf

Git通过core.autocrlf配置项来控制行尾符的转换行为:

配置值适用系统提交时处理检出时处理推荐场景
trueWindowsCRLF → LFLF → CRLFWindows开发者
inputUnix/Linux/macOSCRLF → LF不转换Unix/Linux/macOS开发者
false任意系统不转换不转换纯文本项目或特定需求

3 根本原因:为什么会出现这个问题?

3.1 跨平台开发的必然冲突

现代软件开发通常是跨平台的协作过程:

  1. 开发环境多样性:团队成员可能使用Windows、macOS或Linux
  2. 工具链差异:不同的IDE和编辑器默认使用不同的行尾符
  3. 部署环境不匹配:开发环境与生产环境可能使用不同的操作系统

3.2 缺乏统一的团队规范

大多数团队在项目初期关注功能实现,忽视了代码规范的统一:

  1. 没有明确的编码规范文档
  2. 缺少项目级的配置文件(如.gitattributes
  3. 新成员入职时没有相关培训
  4. 代码审查时忽略格式问题

3.3 IDE和编辑器的默认行为

常见开发工具的默认设置:

  • Visual Studio:Windows上默认CRLF
  • VS Code:继承系统设置或根据文件内容自动检测
  • IntelliJ IDEA:根据项目设置决定
  • Vim/Emacs:通常遵循Unix传统使用LF

4 完整解决方案:从个人到团队的全面应对

4.1 个人开发环境配置

4.1.1 基础Git配置

根据你的操作系统,选择合适的配置:

Windows开发者gitconfig --global core.autocrlftrue提交时CRLF转换为LF,检出时LF转换为CRLF Unix/Linux/macOS开发者gitconfig --global core.autocrlf input 提交时CRLF转换为LF,检出时不转换 查看当前配置gitconfig --global --list|grepautocrlf

4.1.2 IDE/编辑器统一配置

VS Code配置settings.json):

{"files.eol":"\n","files.autoSave":"afterDelay","files.trimTrailingWhitespace":true,"files.insertFinalNewline":true,"[typescript]":{"editor.defaultFormatter":"esbenp.prettier-vscode"}}

WebStorm/IntelliJ配置

  1. 进入 Settings → Editor → Code Style
  2. 设置 Line separator 为\n(Unix and macOS)
  3. 对于已有项目:Code → Reformat Code

4.2 项目级标准化配置(推荐方案)

4.2.1 创建完善的.gitattributes文件

.gitattributes是Git的“行为说明书”,它告诉Git如何处理不同类型的文件:

自动检测文本文件并规范化行尾符 * text=auto 源代码文件显式使用LF *.js text eol=lf *.jsx text eol=lf *.ts text eol=lf *.tsx text eol=lf *.vue text eol=lf *.css text eol=lf *.scss text eol=lf *.less text eol=lf 数据文件使用LF *.json text eol=lf *.xml text eol=lf *.yml text eol=lf *.yaml text eol=lf 文档文件使用LF *.md text eol=lf *.txt text eol=lf *.rst text eol=lf 配置文件使用LF .editorconfig text eol=lf .gitattributes text eol=lf .gitignore text eol=lf .prettierrc text eol=lf .eslintrc text eol=lf 脚本文件保持可执行权限 *.sh text eol=lf Windows相关文件保持CRLF(如果需要) *.bat text eol=crlf *.cmd text eol=crlf *.ps1 text eol=lf PowerShell推荐使用LF 明确指定二进制文件 *.png binary *.jpg binary *.gif binary *.ico binary *.pdf binary *.zip binary *.tar.gz binary 特殊处理某些生成的文件 package-lock.json -text npm锁文件,不进行行尾符转换

4.2.2 创建.editorconfig文件

.editorconfig.gitattributes配合使用,确保所有编辑器行为一致:

EditorConfig顶级配置文件 root = true 所有文件通用规则 [*] charset = utf-8 end_of_line = lf trim_trailing_whitespace = true insert_final_newline = true indent_style = space indent_size = 2 Markdown文件特定规则 [*.md] trim_trailing_whitespace = false 某些Markdown语法需要尾部空格 特定语言规则 [*.py] indent_size = 4 [Makefile] indent_style = tab 特定目录规则 [db/**] charset = latin1

4.3 一次性修复现有问题

如果项目已经存在行尾符混乱的问题,可以使用以下方法修复:

4.3.1 安全修复流程

第一步:备份当前更改gitstash push -m"备份当前更改 before line ending fix"第二步:清理Git缓存gitrm--cached -r.gitreset --hard 第三步:重新规范化所有文件gitadd--renormalize.第四步:提交修复gitcommit -m"fix: 统一行尾符为LF"第五步:恢复工作内容gitstash pop

4.3.2 批量转换工具

对于大型项目,可以使用专门的工具:

使用dos2unix工具(Unix系统)find.-type f -name"*.js"-exec dos2unix{}\;使用PowerShell(Windows) Get-ChildItem -Recurse -Include *.js,*.ts,*.json|ForEach-Object{(Get-Content$_.FullName -Raw)-replace"`r`n", "`n"|Set-Content$_.FullName}

4.3.3 Git过滤器方法

对于需要修复历史记录的情况(谨慎使用):

创建清理过滤器gitfilter-branch --tree-filter' 转换常见文本文件 find . -name "*.js" -type f -exec dos2unix {} \; find . -name "*.ts" -type f -exec dos2unix {} \; find . -name "*.json" -type f -exec dos2unix {} \; find . -name "*.md" -type f -exec dos2unix {} \; '-- --all

5 预防措施:构建健壮的开发流程

5.1 团队规范建设

5.1.1 编码规范文档

在项目的CONTRIBUTING.mdREADME.md中明确说明:

# 行尾符规范 本项目使用 **LF(\n)** 作为统一的行尾符。 ## 开发者配置 请根据你的操作系统进行如下配置: - **Windows用户**: ```bash git config --global core.autocrlf true
  • macOS/Linux用户
    gitconfig --global core.autocrlf input

编辑器配置

请确保你的编辑器设置为使用LF:

  • VS Code:"files.eol": "\n"
  • WebStorm: Settings → Editor → Code Style → Line separator → LF
  • 其他编辑器:参考相关文档配置
### 5.1.2 新成员入职检查清单 创建新成员入职检查项: - [ ] Git行尾符配置正确 - [ ] IDE/编辑器配置LF行尾 - [ ] 安装.editorconfig插件 - [ ] 理解项目.gitattributes规则 - [ ] 知晓修复命令 ## 5.2 自动化检查与验证 ### 5.2.1 Git预提交钩子(pre-commit hook) 创建 `.git/hooks/pre-commit`(或使用Husky等工具): ```bash #!/bin/bash 检查是否有CRLF文件 FILES_WITH_CRLF=$(git diff --cached --name-only | xargs grep -l $'\r' 2>/dev/null || true) if [ ! -z "$FILES_WITH_CRLF" ]; then echo "错误:发现包含CRLF行尾符的文件:" echo "$FILES_WITH_CRLF" echo "" echo "请使用以下命令修复:" echo "1. 安装并运行 dos2unix:dos2unix <文件名>" echo "2. 或者使用脚本:sed -i 's/\r$//' <文件名>" echo "3. 重新添加文件:git add <文件名>" exit 1 fi 检查是否缺少换行符 FILES_WITHOUT_NEWLINE=$(git diff --cached --name-only -z | xargs -0 bash -c ' for file do if [ -f "$file" ] && [ -s "$file" ]; then tail -c1 "$file" | read -r _ || echo "$file" fi done' bash) if [ ! -z "$FILES_WITHOUT_NEWLINE" ]; then echo "警告:以下文件末尾缺少换行符:" echo "$FILES_WITHOUT_NEWLINE" echo "建议在文件末尾添加空行" fi

5.2.2 CI/CD流水线检查

在GitHub Actions、GitLab CI或Jenkins中添加检查:

.github/workflows/check-line-endings.ymlname:Check Line Endingson:[push,pull_request]jobs:check-line-endings:runs-on:ubuntu-lateststeps:-uses:actions/checkout@v2-name:Check for CRLFrun:|查找文本文件中的CRLFfind .-type f-name "*.js"-o-name "*.ts"-o-name "*.jsx"\-o-name "*.tsx"-o-name "*.json"-o-name "*.md"|\ xargs file|grep "CRLF"||true 统计CRLF文件数量 CRLF_COUNT=$(find .-type f \(-name "*.js"-o-name "*.ts"-o-name "*.jsx"\-o-name "*.tsx"-o-name "*.json"-o-name "*.md"\) \-exec grep-l $'\r'{}\;|wc-l) if[$CRLF_COUNT-gt 0]; then echo "发现 $CRLF_COUNT 个文件包含CRLF行尾符" exit 1 fi

5.3 工具链集成

5.3.1 使用lint-staged和Husky

// package.json{"scripts":{"lint:eol":"lint-eol"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,jsx,ts,tsx,json,md}":["eol-lint --fix","git add"]}}

5.3.2 专用行尾符检查工具

安装行尾符检查工具npminstall--save-dev eol-lint 配置检查规则 .eollintrc{"eol":"lf","files":["**/*.js","**/*.ts","**/*.json","**/*.md"],"ignore":["node_modules","dist","build"]}

6 特殊情况与高级技巧

6.1 混合内容文件处理

某些文件类型需要特殊处理:

  • Windows批处理文件(.bat, .cmd):必须使用CRLF
  • PowerShell脚本(.ps1):建议使用LF,从PowerShell 5.1开始支持
  • Visual Studio项目文件(.sln, .csproj):通常需要CRLF
  • Dockerfile:必须使用LF,否则在Linux中执行会出错

6.2 大型仓库的优化策略

对于包含大量文件或二进制文件的项目:

使用.git/info/attributes进行本地覆盖 这个文件不会被提交,适合个人特定配置 .git/info/attributes内容示例: 大文件不进行diff *.psd binary *.iso binary 特定文件类型使用特定diff算法 *.mp4diff=video *.wavdiff=audio

6.3 分布式团队的协作策略

对于跨国或跨时区团队:

  1. 文档先行:编写详细的协作指南
  2. 模板仓库:创建包含所有配置的模板
  3. 自动化检查:在PR/MR模板中添加检查项
  4. 定期审计:每季度检查一次代码规范执行情况

7 常见问题解答(FAQ)

Q1:这些警告会影响我的代码功能吗?

A:通常不会。行尾符警告只是Git的提示信息,不影响代码的运行时行为。但在某些极端情况下(如Shell脚本),错误的行尾符可能导致执行失败。

Q2:我应该选择CRLF还是LF?

A:对于新项目,强烈推荐使用LF。LF是跨平台开发的事实标准,被大多数开源项目和现代工具链支持。

Q3:如何检查文件当前的行尾符?

A:有多种方法:

使用file命令file-k filename 使用cat显示不可见字符cat-A filename 使用od(八进制转储) od -c filename|grep'\\r\\|\\n'使用Visual Studio Code 右下角状态栏会显示行尾符类型(LF/CRLF)

Q4:修复行尾符会改变文件内容吗?

A:从Git的角度看,是的,因为字符发生了变化。但从功能角度看,通常不会影响逻辑。建议在非工作时间段进行大规模修复,并通知所有团队成员。

Q5:.gitattributes.editorconfig有什么区别?

A

  • .gitattributes:控制Git的行为,决定如何存储和检出文件
  • .editorconfig:指导编辑器如何显示和编辑文件
    两者应该配合使用,确保从编辑到版本控制的一致性。

结语

行尾符问题看似微不足道,却是跨平台开发中不可忽视的重要环节。通过本文的介绍,我们不仅理解了CRLF与LF的技术差异,更重要的是掌握了一套完整的解决方案:

  1. 个人层面:正确配置Git和开发工具
  2. 项目层面:建立完善的配置文件和规范
  3. 团队层面:制定协作流程和自动化检查
  4. 文化层面:培养代码规范的意识和习惯

记住,优秀的开发团队不仅关注功能的实现,更注重细节的完善。行尾符的一致性正是这种专业精神的体现。投资时间建立和维护这些规范,将在长期协作中带来巨大的回报——减少合并冲突、提高代码质量、简化新人上手流程。

技术的价值在于解决问题,而规范的建立则是为了防止问题再次发生。从现在开始,为你的项目建立完善的行尾符规范,让你的团队在跨平台开发的道路上行稳致远。

参考资料

  1. Git官方文档 - 配置Git
    https://git-scm.com/book/zh/v2/自定义-Git-配置-Git

  2. Git官方文档 - Git属性
    https://git-scm.com/book/zh/v2/Git-工具-属性

  3. GitHub文档 - 处理行尾符
    https://docs.github.com/zh/get-started/getting-started-with-git/configuring-git-to-handle-line-endings

  4. EditorConfig官方文档
    https://editorconfig.org/

  5. Stack Overflow - Git行尾符相关问题精华
    https://stackoverflow.com/questions/tagged/git+line-endings

  6. 跨平台开发最佳实践(Microsoft)
    https://docs.microsoft.com/en-us/windows/wsl/tutorials/wsl-git

  7. Unix与Windows行尾符历史
    https://en.wikipedia.org/wiki/Newline


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1215125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hot100 230.二叉搜索树中第K小的元素

思路&#xff1a;中序遍历。在二叉搜索树中&#xff0c;中序遍历的遍历顺序就是在从小到大遍历节点值&#xff0c;所以遍历到的第k个节点值就是答案。每次递归完左子树&#xff0c;在根节点的操作中&#xff0c;把k减少1&#xff0c;表示按照中序遍历的顺序访问到了一个节点。当…

hot100 199.二叉树的右视图

见代码随想录 199.二叉树的右视图

hot100 108.将有序数组转换为二叉搜索树

见代码随想录 108.将有序数组转换为二叉搜索树

hot100 98.验证二叉搜索树

见代码随想录 98.验证二叉搜索树

做久坐提醒+拉伸指导工具,设定工作时长,久坐超一小时自动提醒,推送三分钟简易拉伸动作(图文步骤),记录每日拉伸次数。

1. 实际应用场景描述 在现代办公环境中&#xff0c;许多白领、程序员、设计师等长时间坐在电脑前工作&#xff0c;容易导致&#xff1a; - 颈椎、腰椎问题 - 血液循环不畅 - 精神疲劳 虽然知道要活动&#xff0c;但往往忘记或拖延。 本工具适用于办公室、居家办公、学生自习等…

Java毕设项目:基于springboot的社区健康管理系统(源码+文档,讲解、调试运行,定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Java计算机毕设之基于springboot的社区健康管理系统基于SpringBoot的社区医疗健康管理系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

markdown博客发布多平台实战指南

markdown博客发布多平台实战指南 作为技术创作者,内容生产只完成了一半,高效的发布同样关键。下面这套基于 Markdown + 图床 + 多平台工具的工作流程,能让你的博客分发到公众号、csdn、掘金、博客园等平台, 一、发…

2025精选浙江干式打磨台靠谱厂家推荐,水帘除尘器/湿式打磨台/喷淋塔除尘器/活性炭吸附干式打磨台制造厂家怎么选择

随着制造业精细化发展和环保要求日益严格,干式打磨台作为打磨、抛光等工序中控制粉尘污染、保障职业健康的关键设备,其市场需求持续增长。浙江省作为我国重要的制造业和环保产业基地,涌现出一批在干式打磨台领域表现…

抖音直播卖货起号-汽水账号自然流提高了

抖音直播卖货起号-汽水账号自然流提高了目前这2天做一个新号 0粉丝 0关注的新号 店铺销量是个位数 基本也是0 目前直播开了2天 数据良好。自然流量在增加。 第一天 自然流量零星 第二天 随着时间的推移 自然流量明显…

【毕业设计】基于springboot的社区健康管理系统(源码+文档+远程调试,全bao定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【课程设计/毕业设计】基于springboot的社区康养管理系统基于springboot的社区健康管理系统【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

SpringBoot快速上手,一周速通!

大家可以回想一下&#xff0c;当初我们最开始学习Java的时候&#xff0c;搭建一个Web所需要的步骤。。。 1、配置web.xml&#xff0c;加载spring和spring mvc 2、配置数据库连接、配置spring事务 3、配置加载配置文件的读取&#xff0c;开启注解 4、配置日志文件... 5、配…

从代码案例出发,从0到1详解Spring Boot!

大家都知道&#xff0c;Spring Boot框架目前不仅是微服务框架的最佳选择之一&#xff0c;还是现在企业招聘人才肯定会考察的点&#xff1b;很多公司甚至已经将SpringBoot作为了必备技能。但&#xff0c;现在面试这么卷的情况下&#xff0c;很多人面试时还只是背背面试题&#x…

真正的高手,都是贝叶斯主义者

有人问我&#xff1a;在这个黑天鹅乱飞、高不确定性、模糊混沌的世界&#xff0c;到底有没有一种底层逻辑&#xff0c;能让人稳赢&#xff1f; 一开始&#xff0c;我很想回答“没有”&#xff0c;后来&#xff0c;转念一想&#xff0c;如果非要说一个&#xff0c;那就是—— …

中国软件最大的短板,就藏在那个最窝囊的部门

在中国软件行业&#xff0c;交付可能是最窝囊的部门&#xff0c;没有之一。 论地位&#xff0c;他们没有话语权。 论责任&#xff0c;他们是妥妥的背锅侠&#xff1a;项目延期怪交付&#xff0c;回款困难怪交付&#xff0c;客户投诉还是怪交付。 大部分软件公司对交付都有很…

实用指南:ICT运维面试问那些问题

实用指南:ICT运维面试问那些问题2026-01-25 16:17 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !impor…

实用指南:战略合作 | 深信科创携手北极雄芯、灵猴机器人共推国产智能机器人规模化落地

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

windows系统如何查看端口被占用、杀进程

首先是启动windows的命令窗口,按键盘上的windows+R,然后在输入框中输入cmd,既可以启动命令窗口 进入windows命令窗口之后,输入命令,输入netstat -ano然后回车,就可以看到系统当前所有的端口使用情况。 通过命令查…

【简单小项目】从零用C语言实现贪吃蛇

前言&#xff1a;贪吃蛇这个小游戏很适合将前面我们学习到的C语言知识和数据结构中的链表做个总复习并实践&#xff0c;所以本文将带领大家逐步实现贪吃蛇游戏&#xff0c;并学习一些实现这个小游戏所必须掌握的前置知识&#xff08;win32&#xff09; 1.小游戏展示 游戏界面&…