Por lo que puedo ver, muchas funciones usan variables de longitud fija. De hecho, es útil para funciones que necesitan tratar con formato de datos fijo. Sin embargo, el abuso de las variables de longitud fija está causando posibles fallas en la construcción y conversiones no esenciales.
Por ejemplo en src / usb.c:
send_recv acepta txsize
y rxsize
como size_t
pero en el contexto real, esos argumentos deben ser convertidos en int
o unsigned int
, sin una longitud fija, y quien lo llame proporciona argumentos de un tipo diferente ( uint32_t
o números mágicos en este caso). La conversión involuntaria de 32 bits a 64 bits se aplica en el proceso de llamada. Además, para evitar un error de compilación, se requieren muchas conversiones explícitas.
Sugiero reemplazar las variables de longitud fija de acuerdo con sus usos reales.
Mantenerse borroso para ser más portátil.
Me gustaría probarlo si otros lo encuentran significativo.
Gracias por poner esto en la agenda. Como es un problema general en todo el código base, no estoy seguro en este momento si deberíamos ponerlo en v1.6.1 de inmediato. @martonmiklos solicitó previamente hacer una limpieza relacionada con el estilo del código, que empujé al hito v1.6.2. Tal vez este también sea un buen lugar para este problema, aunque lo empujará un poco más.
Tal vez pueda hacer algo de limpieza localmente primero y hacer un seguimiento del proceso de desarrollo.
Bueno, por supuesto que puede, pero asegúrese de ramificarse desde develop
y seguir esta rama, en lugar de master
, que ya no se usa para cambios frecuentes, sino solo para lanzamientos y revisiones.
Con respecto a la compatibilidad entre ILP32, LLP64 y LP64 creo que sería una buena idea reemplazar el tipo de datos long
por int32_t
, pero si se quiere descartar sorpresas en el futuro relacionadas con conversión, podemos considerar movernos a tipos enteros de ancho fijo siempre que sea posible ...
@chenguokai : Te dejo esto. Puedes contribuir, si te apetece y tienes algo de tiempo.
Seguro que lo haré, antes del lanzamiento. Poniéndome ocupado ahora.