Octal literals: who uses this?

Don nospam at nospam.com
Tue Mar 17 09:26:03 PDT 2009


Walter Bright wrote:
> Stewart Gordon wrote:
>> Walter Bright wrote:
>> <snip>
>>> The octal literals are done the way C does them. The reason they are 
>>> there are for when translating C code to D code, obscure bugs are not 
>>> introduced.
>>
>> How would making them illegal not achieve this aim?
> 
> The only point to making them illegal would be to eventually remove them 
> completely, which puts us back to \00 meaning something different in D 
> than in C.

The "Obscure bugs during translation from C" argument presumes that such 
errors are more likely than ones such as:

int powersOfTen[] = {
   0001, //okay
   0010, // error: this is 8, not 10
   0100, // error: this is 64, not 100
   1000, // okay
};

and what the heck does "\000000\000000000\000\0000" mean?
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!

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.

I think the argument for octal is very, very weak.



More information about the Digitalmars-d mailing list