Warum erstellt strlen() beim Kompilieren einer 64-Bit-Anwendung eine 64-Bit-Ganzzahl? Fehle ich etwas?Warum gibt strlen() eine 64-Bit-Ganzzahl zurück? Fehle ich etwas?
Ich verstehe, dass strlen() gibt eine size_type zurück, und per Definition sollte dies nicht ändern, aber ... Warum würde strlen benötigen, um eine 64-Bit-Ganzzahl zurückgeben?
Die Funktion ist für die Verwendung mit Strings vorgesehen. Mit diesem gesagt:
Entwickeln Programmierer häufig Multi-Gigabyte oder Multi-Terabyte-Strings? Wenn dies der Fall wäre, würden sie nicht einen besseren Weg brauchen, um die Stringlänge zu bestimmen, als nach einem NULL-Zeichen zu suchen?
Ich denke, das ist lächerlich, in der Tat, vielleicht brauchen wir eine StrLenAsync() -Funktion mit einem Callback, nur um den extrem langen Prozess für die Suche nach dem NULL in der 40TB-Zeichenfolge zu behandeln. Ton dumm? Ja, well strlen() gibt eine 64-Bit-Ganzzahl zurück!
Natürlich ist die vorgeschlagene StrLenAsync() - Funktion ein Witz.
Woran denken Sie, dass size_t sich nicht je nach Plattform ändert? – Yacoby
Zero-terminated Saiten sind sowieso dumm, also warum kümmern? ;) – OregonGhost
@NTDLS: auf einer 64-Bit-Plattform gibt es keinen echten Overhead bei der Rückgabe einer 64-Bit-Ganzzahl, da sie in ein einzelnes Register passt. (Angenommen, ein Register wird für den Rückgabewert verwendet, was bei den meisten Plattformen, die ich gesehen habe, der Fall ist). –