Soweit ich sehen kann, verwenden viele Funktionen Variablen mit fester Länge. Es ist in der Tat nützlich für Funktionen, die mit einem festen Datenformat umgehen müssen. Der Missbrauch von Variablen mit fester Länge führt jedoch zu möglichen Buildfehlern und unwesentlichen Umwandlungen.
Zum Beispiel in src/usb.c:
send_recv akzeptiert txsize
und rxsize
als size_t
aber im tatsächlichen Kontext müssen diese Argumente in int
oder unsigned int
, ohne eine feste Länge, und wer auch immer sie aufruft, liefert Argumente eines anderen Typs ( uint32_t
oder magische Zahlen in diesem Fall). Beim Aufrufprozess wird eine unbeabsichtigte Umwandlung von 32 Bit auf 64 Bit angewendet. Außerdem sind viele explizite Umwandlungen erforderlich, um einen Buildfehler zu verhindern.
Ich schlage vor, Variablen mit fester Länge entsprechend ihrer tatsächlichen Verwendung zu ersetzen.
Bleiben Sie unscharf, um tragbarer zu sein.
Ich würde es gerne ausprobieren, wenn andere es sinnvoll finden.
Danke, dass du das auf die Tagesordnung gesetzt hast. Da es sich um ein allgemeines Problem in der gesamten Codebasis handelt, bin ich mir im Moment nicht sicher, ob wir das sofort in v1.6.1 einbauen sollten. @martonmiklos hat zuvor eine Bereinigung im Zusammenhang mit dem
Vielleicht kann ich zuerst lokal aufräumen und den Entwicklungsprozess verfolgen.😃
Natürlich können Sie das, aber stellen Sie sicher, dass Sie von develop
abzweigen und diesem Zweig folgen, anstatt master
, der nicht mehr für häufige Änderungen verwendet wird, sondern nur für Releases und Hotfixes.
Hinsichtlich der Kompatibilität zwischen ILP32, LLP64 und LP64 halte ich es für eine gute Idee den Datentyp long
durch int32_t
zu ersetzen, aber wenn man in Zukunft Überraschungen in Bezug auf . ausschließen will Konvertierung können wir in Erwägung ziehen, wo immer möglich, zu Integer-Typen mit fester Breite überzugehen...
@chenguokai : Das überlasse ich dir. Wenn Sie Lust haben und etwas Zeit haben, können Sie dazu beitragen.
Natürlich werde ich das vor der Veröffentlichung tun. Werde jetzt beschäftigt.😔