[Issue 2656] Remove octal literals
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Nov 27 14:26:41 PST 2010
http://d.puremagic.com/issues/show_bug.cgi?id=2656
--- Comment #15 from bearophile_hugs at eml.cc 2010-11-27 14:25:07 PST ---
(In reply to comment #14)
> Let's give it a hope. Facts and reason do have to carry some weight. I'll
> commit octal to Phobos.
Even MISRA C disallows octal constants. They are useful only in special
situations. If Walter can't accept the idea of removing them from D, then an
alternative idea is to use a strategy inspired by how GCC deals with trigraphs.
This is a C program:
#include "stdio.h"
int main() {
puts("??-");
return 0;
}
If I compile it with GCC 4.5 I receive:
...>gcc tritest.c -o tritest
tritest.c: In function 'main':
tritest.c:3:11: warning: trigraph ??- ignored, use -trigraphs to enable
...>tritest
??-
But a compiler switch enables them:
...>gcc -trigraphs tritest.c -o tritest
...>tritest
~
A similar compiler switch like "-octals" may enable octal number syntax in D.
But the idea of numerical constants that change value according to a compiler
switch is bad, so I don't want a warning. So a better idea is to turn integral
literals that start with one zero into true syntax errors, unless the "-octals"
switch is used.
This is useful also because turns standard C syntax (octals) into a syntax
error, instead of turning them silently into different values. This follows the
D design strategy of behaving (almost everywhere) like C where the C syntax is
accepted by the D compiler and producing a syntax error otherwise.
(This is not a tidy solution, but keeping some backwards compatibility with C
often asks for not tidy workarounds).
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list