knowledge:3d_print:2023052301
差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
knowledge:3d_print:2023052301 [2023/05/24 03:35] – [命名以及符号] murong_square | knowledge:3d_print:2023052301 [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1 | ||
---|---|---|---|
行 93: | 行 93: | ||
===== 文件名 ===== | ===== 文件名 ===== | ||
- | Marlin 源代码的文件名最好使用 '' | + | Marlin 源代码的文件名最好使用 '' |
* C++ 源文件使用 '' | * C++ 源文件使用 '' | ||
行 117: | 行 117: | ||
===== 库 ===== | ===== 库 ===== | ||
+ | 尽量使用 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.1684899347.txt · 最后更改: 2023/06/07 04:09 (外部编辑)