Re:Git's list of banned C functions
by lultimouomo on Thursday March 04, 2021 @06:05PM
(#26349773)
On the contrary, I think "Strings are just character arrays are just pointers" is the solution, not the problem. As with non-character arrays, you must always pair the pointer with a length. (I don't like the idea of prefixing the length because it prevents su stringing).
The problem is the null termination, which is not general to arrays (though it is sometimes used with arrays of pointers).
Re:Git's list of banned C functions
by ByteJockey on Thursday March 04, 2021 @09:18PM
(#26351674)
You sometimes see sentinel values used with varargs (only if they're all the same type), which is basically just an array with more boilerplate.
That being said. Length as a first parameter and the rest of the arguments being the variadic bit is also quite normal.
You're just moving the complexity from strings into unsigned integers. Your strings are limited by the size of whatever you put in the head of the string.
Sure 16 exabytes sounds like a lot today, but so did 4 billion ip addresses. Differently bad is not better.
Human concepts are inherently messy. "Elegant" solutions just shove the mess down the road.