knowledge:3d_print:2023052301
差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
| knowledge:3d_print:2023052301 [2023/05/23 12:04] – [空格] murong_square | knowledge:3d_print:2023052301 [2025/10/11 02:55] (当前版本) – 外部编辑 127.0.0.1 | ||
|---|---|---|---|
| 行 60: | 行 60: | ||
| * '' | * '' | ||
| * 类型转换函数后不用加空格:'' | * 类型转换函数后不用加空格:'' | ||
| - | * 大多数二元及三元操作符要加空格:' | + | * 大多数二元及三元操作符要加空格:''myVar = aVar + bVar * cVar;'' |
| ===== 行末的空格 ===== | ===== 行末的空格 ===== | ||
| 行 73: | 行 73: | ||
| 一般情况下,注释所代表的是你的代码是干嘛的,而不是你的代码是如何工作的。在函数体中的注释应尽量的少。如果一个函数非常的复杂,你应该考虑分段地把注释写在函数中每个基本单元内。将细节代码写在函数头中,用于阐述它是干嘛以及为什么它要这么干。 | 一般情况下,注释所代表的是你的代码是干嘛的,而不是你的代码是如何工作的。在函数体中的注释应尽量的少。如果一个函数非常的复杂,你应该考虑分段地把注释写在函数中每个基本单元内。将细节代码写在函数头中,用于阐述它是干嘛以及为什么它要这么干。 | ||
| - | * 函数、类以等使用“D 型氧气”风格注释在 '' | + | * 函数、类以等使用“D 型氧气”风格注释在 '' |
| /** | /** | ||
| * 这是 Marlin 中的一种比较好的多行注释。 | * 这是 Marlin 中的一种比较好的多行注释。 | ||
| 行 84: | 行 84: | ||
| </ | </ | ||
| - | * 当注释在 3 行以下时,使用 C++ 的 ''//'' | + | * 当注释在 3 行以下时,使用 C++ 的 '' |
| // 一行或两行时 | // 一行或两行时 | ||
| // 应该使用这样的注释。 | // 应该使用这样的注释。 | ||
| 行 90: | 行 90: | ||
| ====== 命名以及符号 ====== | ====== 命名以及符号 ====== | ||
| + | |||
| + | ===== 文件名 ===== | ||
| + | |||
| + | Marlin 源代码的文件名最好使用 '' | ||
| + | |||
| + | * C++ 源文件使用 '' | ||
| + | * C 源文件使用 '' | ||
| + | * 头文件使用 '' | ||
| + | |||
| + | ===== 目录 ===== | ||
| + | |||
| + | * 目录名使用小写 | ||
| + | * 在 Marlin 1.0.x 与 1.1.x 版本中使用 '' | ||
| + | * 在 Marlin 1.2.x 及以上版本中使用 '' | ||
| + | |||
| + | ===== 大写 ===== | ||
| + | |||
| + | 对于 Marlin 当中的变量、数据成员、函数以及方法使用 '' | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * 由 ''# | ||
| + | * '' | ||
| + | |||
| + | ===== 库 ===== | ||
| + | |||
| + | 尽量使用 avr-libc 或者 Arduino 中的已捆绑的库。Marlin 中所需要编译的库应该在 package 中被引用,从而保证版本的兼容性。 | ||
| + | |||
| + | ====== 语言特性 ====== | ||
| + | |||
| + | Marlin 由 C/C++ 编写,并且由 '' | ||
| + | |||
| + | 在更新的版本中,Marlin 不再兼容先前版本(pre-2017)的工具链。能与 Marlin 1.1.x 兼容的最旧版本的 Arduino IDE 为 1.6.8。 | ||
| + | |||
| + | * 不要使用以下的 C++ 扩展功能: | ||
| + | * Exceptions (throw / catch) | ||
| + | * Virtual function / classes | ||
| + | * Standard Template Library (STL) | ||
| + | * 请使用更加现代的 C++11: | ||
| + | * '' | ||
| + | * 用于检查 '' | ||
| + | |||
| + | ===== 原生数据类型 ===== | ||
| + | |||
| + | * 为了可移植性,建议使用 '' | ||
| + | * AVR 视 '' | ||
| + | |||
| + | ===== 内存使用 ===== | ||
| + | |||
| + | * 使用像 '' | ||
| + | * 使用未限制的递归会导致内存爆炸,因此避免使用。 | ||
| + | * 在许多主板中内存很宝贵,所以尽量别用全局以及静态变量。 | ||
| + | * 使用 '' | ||
| + | |||
| + | ===== 减少重复 ===== | ||
| + | |||
| + | 在使用宏、轻量函数等应该避免重复,例如:< | ||
| + | #if ENABLED(FEATURE_ONE) | ||
| + | const char blue = ' | ||
| + | #else | ||
| + | const char blue = ' | ||
| + | #endif | ||
| + | </ | ||
| + | 不如:< | ||
| + | const char blue = | ||
| + | #if ENABLED(FEATURE_ONE) | ||
| + | ' | ||
| + | #else | ||
| + | ' | ||
| + | #endif | ||
| + | ; | ||
| + | </ | ||
| + | 更不如:< | ||
| + | const char blue = TERN(FEATURE_ONE, | ||
| + | </ | ||
| + | |||
| + | ===== 避占用更多资源地代码 ===== | ||
| + | |||
| + | * '' | ||
| + | * 提前计算数值,减少在程序运行中运算。 | ||
| + | * 能用乘法的别用除法。 | ||
| + | * 大多数冗余的代码并不会优化程序,所以用更少的代码。 | ||
| + | |||
| + | ===== #include 的最佳使用 ===== | ||
| + | |||
| + | * 引用当前程序中的声明的头文件,这会使程序的依赖性更加直观。 | ||
| + | * 不要引用不被使用的 '' | ||
| + | * 头文件被引用的顺序: | ||
| + | * 当配置需要被使用时,引用 '' | ||
| + | * 在最外层 ''# | ||
| + | * 按照依赖顺序引用依赖。 | ||
| + | * 最后引用系统以及库的头文件,例如 '' | ||
| + | |||
| + | ====== 由 Marlin 定义的转换 ====== | ||
| + | |||
| + | ===== 预处理命令 ===== | ||
| + | |||
| + | * 用 ''# | ||
| + | * 对于注释掉的未使用的、过时的代码,不要使用 ''# | ||
| + | * 使用 ''# | ||
| + | * 同理,使用 '' | ||
| + | * 考虑到更佳的可阅读及可移植性,使用 ''# | ||
| + | * 在超过 15 行代码的 ''# | ||
| + | |||
| + | ===== 宏 ===== | ||
| + | |||
| + | 在 '' | ||
| + | |||
| + | ==== 配置测试 ==== | ||
| + | |||
| + | |||
| + | ==== 三元宏 ==== | ||
| + | |||
| + | |||
| + | ==== 检查定义的引脚 ==== | ||
| + | |||
| + | |||
| + | ==== 快速 I/O ==== | ||
| + | |||
| + | |||
| + | ==== 便捷循环 ==== | ||
| + | |||
| + | |||
| + | ==== 重复 ==== | ||
| + | |||
| + | |||
| + | ==== 映射 ==== | ||
| + | |||
| + | |||
| + | ==== 字符测试 ==== | ||
| + | |||
| + | |||
| + | ==== 列表与数组 ==== | ||
| + | |||
| + | |||
| + | ==== 时间比较 ==== | ||
| + | |||
| + | |||
| + | ==== 通讯 ==== | ||
| + | |||
| + | |||
| + | ==== 数学 ==== | ||
| + | |||
| + | |||
| + | ==== 其他 ==== | ||
| + | |||
| + | |||
| + | ===== 添加新功能 ===== | ||
| + | |||
| + | |||
| + | ==== 一些例子 ==== | ||
knowledge/3d_print/2023052301.1684843458.txt · 最后更改: 2025/10/11 02:55 (外部编辑)
