据我所知,许多函数使用固定长度的变量。 对于需要处理固定数据格式的函数来说确实很有用。 然而,滥用固定长度变量会导致潜在的构建失败和无关紧要的强制转换。
例如在 src/usb.c 中:
send_recv 接受txsize
和rxsize
作为size_t
但在实际上下文中,这些参数必须转换为int
或unsigned int
,而不固定长度,调用它的人提供不同类型的参数(在这种情况下uint32_t
或幻数)。 在调用过程中应用了从 32 位到 64 位的无意转换。 此外,为了防止构建失败,需要许多显式转换。
我建议根据实际使用情况替换固定长度的变量。
保持模糊以更便携。
如果其他人觉得它有意义,我想尝试一下。
感谢您将其提上议程。 由于这是整个代码库中的一个普遍问题,我目前不确定我们是否应该立即将其放入 v1.6.1。 @martonmiklos之前要求做一些与代码风格相关的清理工作,我将其推入了 v1.6.2 里程碑。 也许这也是解决这个问题的好地方,尽管它会更进一步。
也许我可以先在本地做一些清理,然后跟进开发过程。😃
当然你可以,但请确保从develop
分支并继续关注这个分支,而不是master
,它不再用于频繁的更改,而仅用于发布和修补程序。
关于 ILP32、LLP64 和 LP64 之间的兼容性,我认为将数据类型long
替换int32_t
是个好主意,但是如果您想排除未来与转换,我们可能会考虑尽可能地转移到固定宽度的整数类型......
@chenguokai :我会把这个留给你。 如果您愿意并有一些时间,您可以做出贡献。
我当然会,在发布之前。 现在很忙😔