Serious extern(C) bug

growler growlercab at gmail.com
Tue Sep 24 21:35:34 PDT 2013


On Wednesday, 25 September 2013 at 04:13:02 UTC, Luís Marques 
wrote:
> Have you seen this one before? Do you know a workaround? (DMD  
> v2.063.2, on OX X 10.9)
>
> file.d:
>
>     extern(C)
>     {
>         int x = 0;
>         void setx();
>         void printx();
>     }
>
>     void main()
>     {
>         setx(); // sets x = 42
>         writeln(x); // prints x = 0
>         printx(); // prints x = 42
>         x = 7;
>         printx(); // prints x = 42
>     }
>
>
>
> file.c:
>
>     #include <stdio.h>
>
>     extern int x;
>
>     void setx()
>     {
>         x = 42;
>     }
>
>     void printx()
>     {
>         printf("%d\n", x);
>     }
>
> Output:
>
>     0
>     42
>     42

don't you need extern __gshared on the var?

extern __gshared int x;





More information about the Digitalmars-d mailing list