C++ 源码文本格式规范

先说规范:

  • 字符编码 :UTF-8(无 BOM) → 统一文字存储,跨平台不乱码、不报错。
  • 换行符格式 :LF → 统一换行格式,避免 Git 与跨平台异常。
  • 缩进格式 :空格缩进 → Tab 键转为空格,无真实 Tab,保证对齐一致。

字符编码:UTF-8(无 BOM)

Unicode UTF-8 编码 是跨平台通用标准编码,支持中英文、符号、特殊字符,兼容性最强。同时无BOM头(EF BB BF) 可避免在 Linux、macOS、编译器、Git 等工具中出现开头乱码、编译报错、头文件提前输出等问题。


换行符格式:LF

Windows 默认换行符:CRLF(\r\n),Linux/macOS/Git/编译器中则是:LF(\n)。统一 LF 可避免:Git 提示换行符变更警告,跨平台编译、脚本执行异常,代码行尾出现多余不可见字符等问题。

为避免Git 提示换行符变更警告,可在源文件根目录添加.gitattributes文件:

cmd 复制代码
# 统一源码换行符为 LF
*.{h,cpp,cmake} text eol=lf

# Windows 相关可保留 CRLF
*.{cmd,bat,ps1} text eol=crlf

# 二进制文件不处理(图片/压缩包/字体等)
*.{png,jpg,jpeg,gif,ico,svg,zip,7z,tar.gz,rar,pdf,exe,dll,bin} binary

或:

cmd 复制代码
# 强制所有文件使用 LF 换行符
* text=auto eol=lf

# Windows 相关可保留 CRLF
*.{cmd,bat,ps1} text eol=crlf

# 二进制文件不处理(图片/压缩包/字体等)
*.{png,jpg,jpeg,gif,ico,svg,zip,7z,tar.gz,rar,pdf,exe,dll,bin} binary

缩进格式:空格缩进(Space Indent)

Tab 不是固定 4 个空格,也不是固定 8 个空格。它是一个控制字符,含义是:跳到下一个制表位(tab stop)。不同编辑器显示宽度不同。

当缩进使用空格(Space) ,不使用真实 Tab 字符(\t)。虽然按下 Tab 键的 ,但实际插入若干个空格(通常 4 个或 2 个) ,所看见宽度在任何编辑器中都相同 。由于文件中不存在真实 Tab 字符,保证在任何编辑器、平台、打印机中对齐完全一致,不会出现缩进错乱。


相关推荐
努力努力再努力wz8 分钟前
【Lua 进阶系列】从 C++ 对象到 Lua 变量:一文理解 userdata、Lua 栈与元表绑定机制
c++·junit·lua
慧都产品智能化33 分钟前
Qt 表格升级攻略:复用已有编辑器,减少重复开发
c++·qt·编辑器·qt6.3
ShineWinsu1 小时前
对于Qt:QTableWidget常见属性以及QTableWidgetItem类的解析
开发语言·c++·qt·gui·客户端·表格·qtablewidget
ShineWinsu2 小时前
对于Qt:QListWidget常见属性以及QListWidgetItem类的解析
开发语言·c++·qt·客户端·列表·qlistwidget·qlistwidgetitem
坤坤子吖2 小时前
Linux网络编程:自定义应用层协议与 JSON 序列化
linux·服务器·网络·c++·笔记·json
吴名氏.2 小时前
Java转AI Agent教程(第十二周)检索与切分
java·开发语言·人工智能·ai·ai agent
瑞雪兆丰年兮3 小时前
JavaWeb-day10-SpringBootWeb案例
java·开发语言·javaweb·web
Elastic 中国社区官方博客3 小时前
更少的位数,相同的召回率:DiskBBQ 更保守的自动校准扫描
大数据·运维·开发语言·人工智能·elasticsearch·搜索引擎
三雷科技4 小时前
第6章第4节:自定义分词器
开发语言·c#
沫璃染墨4 小时前
从零入门计算机网络系列(十八):TCP连接管理详解——从三次握手与四次挥手到TIME_WAIT机制
运维·服务器·网络·c++·网络协议·tcp/ip·tcp