[advanced c++] Professional coding 01 - 头文件、作用域、函数
学习笔记
From: Google 开源项目风格指南
“风格” 的含义涵盖范围广,例如:
- 从 “变量使用驼峰格式 (camelCase)”
- 到 “决不使用全局变量”
- 再到 “决不使用异常”。
已经发布了五份 中文版 的风格指南:
- Google C++ 风格指南 // <----
- Google Objective-C 风格指南
- Google Python 风格指南
- Google JSON 风格指南
- Google Shell 风格指南
风格文档的三个要求级别:
【强制】必须遵守,违反本约定或将会引起严重的后果;
【推荐】尽量遵守,长期遵守有助于系统稳定性和合作效率的提升;
【参考】充分理解,技术意识的引导,是个人学习、团队沟通、项目合作的方向。
只是记录容易犯错的部分,以及相应的思考。
辩证地看待某个用法,何时用,怎么用,有何弊端。
高级部分:
未来可继续 python vs c++ 的特征间比较,从而理解c++的灵活性,以及python简化了哪些c++特性。
我的注释
头文件
- 0. 扉页
- 1. 头文件
- 1.1. Self-contained 头文件 【编译器(compiler)为了给template生成代码,他需要看到声明(declaration )在.h文件中;对应的定义(definition )在.inc中。???】
- 1.2. #define 保护
- 1.3. 前置声明 【例如:文件开始出的函数、变量、类声明,歧义部分】
- 1.4. 内联函数【10行原则】
- 1.5.
#include
的路径及顺序 - 译者 (YuleFox) 笔记
- 译者(acgtyrant)笔记
#ifndef 进化为 #pragma once
前置声明的类是不完全类型???
.inc文件
C/C++的标准惯例是将class、function的声明信息写在.h文件中。.c文件写class实现、function实现、变量定义等等。然而对于template来说,它既不是class也不是function,而是可以生成一组class或function的东西。编译器(compiler)为了给template生成代码,他需要看到声明(declaration )和定义(definition ),因此他们必须不被包含在.h里面。
That is to say
-
- .inc写模板的声明(例如:模板类)
- .h里写模板的实现(例如:模板类中的函数)
作用域
匿名命名空间 何时用?
C++ 新的标准中提倡使用匿名命名空间,而不推荐使用static,因为static用在不同的地方,涵义不同,容易造成混淆.另外,static不能修饰class。
原生数据类型 (POD : Plain Old Data): 即 int, char 和 float, 以及 POD 类型的指针、数组和结构体。
我们也不允许用函数返回值来初始化 POD 变量,除非该函数(比如 getenv()
或 getpid()
)不涉及任何全局变量。函数作用域里的静态变量除外,毕竟它的初始化顺序是有明确定义的,而且只会在指令执行到它的声明那里才会发生。
函数
-
- 4.1. 参数顺序
- 4.2. 编写简短函数【函数小于40行】
- 4.3. 引用参数【 void Foo(const string &in, string *out); 】
- 4.4. 函数重载
- 4.5. 缺省参数【可能与函数重载造成编译器冲突】
- 4.6. 函数返回类型后置语法
只有在常规写法 (返回类型前置) 不便于书写或不便于阅读时使用返回类型后置语法.
Jeff:
本篇大概就涉及这些内容,未来继续补充对细节的理解。
细节问题很多,需要慢慢追加整理。
End.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律