Implicit enum conversions are a stupid PITA
Clemens
eriatarka84 at gmail.com
Thu Mar 25 16:50:31 PDT 2010
Walter Bright Wrote:
> Adam D. Ruppe wrote:
> > The argument most often brought up for keeping octal *at all* is unix
> > filesystem permissions. They are only ever as big as four digits (AFAIK).
>
> There is one other reason: converting C code to D code. This should follow the
> principle of "if it doesn't give a compiler error, it should produce the same
> result". Translating:
>
> 0177
>
> in C to:
>
> 0177
>
> in D will silently produce a very different result (should such a number be
> decimal).
How about a command line argument to DMD which can be used to aid in porting legacy C code? It would cause the compiler to generate a warning (or error if you wish) for every occurrence of an ambiguous construct like this. Once all such cases have been converted to valid D code and the code compiles without warnings, the command line argument can be dropped.
This allows D to escape from the C compatibility trap which has encumbered C++ so much while still giving safety against subtle bugs while porting old code.
More information about the Digitalmars-d
mailing list