NoScopeStatement violates C compatibility principal.
bearophile
bearophileHUGS at lycos.com
Tue May 28 04:21:04 PDT 2013
monarch_dodra:
> So basically, this is saying "If your C code compiles in D,
> you'll get the same result. I guarantee it :)"
It's a general rule, but it has some exceptions, like C programs
that rely on global floating point variables initialized to 0, or
when you use a fixed-sized array, that D passes by value and C by
pointer.
> Here's a (reduced) C program:
>
> ----
> int i = 3;
>
> void main()
> {
> {
> int some_condition = 1;
> if ( some_condition )
> goto block_end;
>
> /* dummy code */
> } block_end:
>
> {
> int i = 7;
> printf("%i", i);
> }
>
> printf("%i", i);
> }
> ----
> C prints: "70"
> D prints: "77"
This should go in some page that lists the differences between C
and D.
> if anybody can think of a rationale for the current behavior.
> And if there is no rationale, how much support there is for
> changing it.
It's bad to break C backwards compatibility for free, so if it's
not useful for D then and it should be fixed.
Bye,
bearophile
More information about the Digitalmars-d
mailing list