Octal literals: who uses this?
Don
nospam at nospam.com
Wed Mar 18 01:10:54 PDT 2009
Walter Bright wrote:
> Don wrote:
>> and what the heck does "\000000\000000000\000\0000" mean?
>
> It doesn't matter, because if you're translating C code to D, the code
> is probably correct even if you don't know what it means.
Note that in C, you can't reasonably have \0 embedded in a string. But
in both D and C# you can. So the "\0000" case isn't really a problem for
C. It's far more likely in D that someone would write:
"1st\02nd\03rd\04th\0";
and expect it to work.
>> I doubt there is much extant C code which uses octal. Automated
>> translations of octal literals can be done accurately, and you're even
>> supplying the 'htod' converter!
>
> htod is not intended for creating implementation source code. It's just
> for headers. I expect most C translations will be done by hand.
The point is that a reasonable fraction of the few remaining instances
of octal literals, will be machine translated, and will therefore be
free from these errors.
>
>> Note that C# doesn't have octal literals, but does include \0. So
>> there's a precedent for dropping them. This also means that right now,
>> converting code from C# to D can also introduce obscure bugs. I'd
>> argue that that's a scenario that is at least as likely as bugs from C.
>
> It is a good point, but I don't see people translating C# to D. But I do
> see translating C to D (I do it myself!).
>
>> I think the argument for octal is very, very weak.
>
> The issue is really the cost of it being in vs the benefit of pulling it
> out. I see very little cost of leaving it in, so it doesn't need much
> benefit to make it worthwhile.
Inertia is the strongest argument, I think.
Octal-related bugs may occur
(1) when translating from ancient C code, if octal is removed.
(2) when translating from C#, if octal is retained.
(3) when writing new D code, if octal is retained.
IMHO, (2) and (3) are more probable than (1). However, all 3 cases are
quite unlikely. It's extremely low on the list of priorities.
More information about the Digitalmars-d
mailing list