knowledge:3d_print:2023052301
差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
knowledge:3d_print:2023052301 [2023/05/23 12:03] – [空格] murong_square | knowledge:3d_print:2023052301 [2023/06/07 04:23] (当前版本) – 外部编辑 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.1684843390.txt · 最后更改: 2023/06/07 04:09 (外部编辑)