Re: [EE] Ideas about improving safety in C language

Isaac Marino Bavaresco <[email protected]>
Newsgroups gmane.comp.hardware.microcontrollers.pic
Message-ID <[email protected]>
std::string is C++ only, and arrays of chars are often used in C++ too.

Cheers,

Isaac


Em 18/04/2025 07:30, Ryan O'Connor escreveu:
> What's wrong with std::string
>
> Ryan
>
> On Wed, 16 Apr 2025 at 02:32, Isaac Marino Bavaresco <
> [email protected]> wrote:
>
>> Hi folks,
>>
>> I was thinking about the current discussion about C/C++ language safety,
>> and I recalled an old idea I had long ago about creating a new string
>> format and library.
>>
>> It could be possible for one person alone to implement and use it
>> privately, but of course it would be even better if it becomes a
>> standard, perhaps with support from the compilers.
>>
>> I don't know whether something similar was already suggested or is being
>> used, but I would like to know your opinion about it.
>>
>>
>> Cheers,
>>
>> Isaac
>>
>>
>> Proposed New C string format:
>>
>> Bytes:
>> <descriptor> [<references_counter>] <allocated_size_indicator>
>> [<used_size_indicator> [<number_of_characters>]] [<characters>...]
>>
>> Descriptor: (bits) 0aabbccr (bit seven is reserved to indicate future
>> new formats, most probably two-byte descriptors)
>>
>> It would be good to have an encoding field (to indicate ASCII, ANSI,
>> UTF-8, UTF-16, etc.), but there is not enough bits in a byte and the
>> fields I chose are more important. Perhaps it can be included in a
>> two-byte descriptor format.
>>
>> Some details like the obligatory presence of an ending '\0' character or
>> not must be discussed. If the ending '\0' is required, it would be very
>> simple to use the new format  with the traditional C library functions.
>>
>>
>> aa = Area:
>> 00    Static
>> 01    Stack (automatic)
>> 10    Dynamic
>> 11    Dynamic with references counter
>>
>> bb = Length Indicators Bits
>> 00     8 bits
>> 01    16 bits
>> 10    32 bits
>> 11    64 bits (perhaps this value could be used for other purpose, most
>> probably 64-bits will never be used).
>>
>> cc = Length Indicators Present
>> 00    Only Allocated Size Indicator (used for read-only or fixed size
>> strings)
>> 01    Allocated Size and Used Size Indicators
>> 10    Allocated Size, Used Size and Number of Characters Indicators
>> 11    *Reserved*
>>
>> Size Indicators: All-ones means not informed. Could be used so the
>> length is to be calculated when the string is accessed for the first
>> time, saving the need for calculating the length of every string in
>> advance. It would require '\0' ended strings. Needs more thought.
>>
>> r = Read Only
>> 0    Read-Write
>> 1    Read-Only
>>
>>
>> --
>> O software antivírus Avast realizou uma checagem de vírus neste e-mail.
>> www.avast.com
>> --
>> http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive
>> View/change your membership options at
>> https://mailman.mit.edu/mailman/listinfo/piclist
>>

-- 
O software antivírus Avast realizou uma checagem de vírus neste e-mail.
www.avast.com
-- 
http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive
View/change your membership options at
https://mailman.mit.edu/mailman/listinfo/piclist
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.